தரவு நிலைத்தன்மை API
ஆஃப்லைன்-முதல் கட்டமைப்பைப் பயன்படுத்தி தரவு விநியோகத்திற்கு டிரேஸ்லெட் உத்தரவாதம் அளிக்கிறது. ஒவ்வொரு இருப்பிட ஒருங்கிணைப்பு, செயல்பாடு மாற்றம் மற்றும் ஜியோஃபென்ஸ் நிகழ்வு ஆகியவை மறைகுறியாக்கப்பட்ட உள்ளூர் SQLite தரவுத்தளத்தில் உடனடியாக எழுதப்படும்.
ட்ரேஸ்லெட்டின் ஒத்திசைவு இயந்திரம் இந்தத் தரவுத்தளத்திலிருந்து தரவைத் தானாகப் படித்து நீக்கும் அதே வேளையில், நிலையான கடையின் மீது உங்களுக்கு முழு கைமுறைக் கட்டுப்பாடு உள்ளது.
1. இடங்களை வினவுதல்
SQLite தரவுத்தளத்தில் தற்போது அமர்ந்திருக்கும் மூல, ஒத்திசைக்கப்படாத இடங்களைப் பிரித்தெடுக்கலாம்.
// Get ALL locations currently stored in the database
final locations = await tl.Tracelet.getLocations();
for (final loc in locations) {
print('Location: \${loc.coords.latitude}, \${loc.coords.longitude}');
}மேம்பட்ட SQL வினவல்கள்
நீங்கள் எல்லாவற்றையும் எடுக்க வேண்டியதில்லை. நிலையான SQL போன்ற தரவுத்தளத்தை வடிகட்ட உங்களை அனுமதிக்கும் SQLQuery பொருளை ட்ரேஸ்லெட் வெளிப்படுத்துகிறது.
// Get only the locations recorded on a specific date
final query = tl.SQLQuery(
where: "timestamp >= ? AND timestamp <= ?",
whereArgs: ["2024-01-01T00:00:00Z", "2024-01-01T23:59:59Z"],
limit: 100,
order: "timestamp DESC"
);
final specificLocations = await tl.Tracelet.getLocations(query);2. பதிவுகளை எண்ணுதல்
எத்தனை இடங்கள் பேக்லாக் செய்யப்பட்டுள்ளன என்பதை நீங்கள் தெரிந்து கொள்ள வேண்டும் என்றால் (எ.கா., உங்கள் UI இல் “ஆஃப்லைன் ஒத்திசைவு வரிசை” பேட்ஜைக் காட்ட), getCount() ஐப் பயன்படுத்தவும். இது மிகவும் உகந்ததாக உள்ளது மற்றும் பதிவுகளை நினைவகத்தில் ஏற்றாது.
// Count total un-synced locations
final count = await tl.Tracelet.getCount();
print('Pending locations to sync: \$count');
// You can also use SQL queries here
final highAccuracyCount = await tl.Tracelet.getCount(
tl.SQLQuery(where: "accuracy <= 20")
);3. ஆஃப்லைன் வரிசையை ஆய்வு செய்தல்
ட்ரேஸ்லெட் ஒவ்வொரு பதிவையும் ஒத்திசைக்கப்பட்ட தருணத்தில் கத்தரிக்கிறது என்பதால், தரவுத்தளத்தில் இன்னும் ஒவ்வொரு இடமும் - வரையறையின்படி - நிலுவையில் உள்ளது பதிவேற்றம். நிலுவையில் உள்ள வரிசை உதவியாளர்கள் இதை வெளிப்படையாகச் செய்கிறார்கள், இது “ஒத்திசைக்க காத்திருக்கிறது” பேட்ஜைக் காட்டுவதற்கும், தணிக்கைக் காட்சியை உருவாக்குவதற்கும் அல்லது இணைப்பைக் கண்டறிவதற்கும் ஏற்றது.
// The locations still waiting to be delivered to your backend.
final pending = await tl.Tracelet.getPendingLocations();
// Just the queue depth (optimized — no records are loaded into memory).
final pendingCount = await tl.Tracelet.getPendingLocationCount();
print('Offline queue: \$pendingCount location(s) waiting to sync');getLocations() / getCount() போன்ற நேர வரம்பு வடிகட்டுதலுக்கான விருப்பமான SQLQuery ஐ இருவரும் ஏற்றுக்கொள்கிறார்கள்.
4. தானியங்கி தக்கவைப்பு
3.8.3 இல் சரி செய்யப்பட்டது. இரண்டு PersistenceConfig விசைகள் உள்ளூர் வரிசை எவ்வளவு வைத்திருக்க அனுமதிக்கப்படுகிறது என்பதைக் கட்டுப்படுத்துகிறது, எனவே நீண்ட ஆஃப்லைன் நீட்டிப்பு வரம்பில்லாமல் தரவுத்தளத்தை வளர்க்க முடியாது.
await tl.Tracelet.ready(tl.Config(
persistence: tl.PersistenceConfig(
// Purge records older than this many days. -1 retains forever.
maxDaysToPersist: 3,
// Never hold more than this many records; the oldest go first.
// -1 is unlimited.
maxRecordsToPersist: 5000,
),
));| திறவுகோல் | இயல்புநிலை | -1 என்றால் |
|---|---|---|
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | என்றென்றும் வைத்திருங்கள் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | வரம்பற்ற |
பதிவுகள் பழைய முதல், செருகும் வரிசையின் மூலம் வெளியேற்றப்படுகின்றன - ஒத்திசைவு இயந்திரம் அவற்றைப் பதிவேற்றும் அதே வரிசையில், வரிசை எப்போதும் புதிய தரவை வைத்திருக்கும். இரண்டு தொப்பிகளும் சுயாதீனமானவை: எது முதலில் சென்றடைகிறதோ அது பொருந்தும், மற்றொன்று அமலில் இருக்கும் போது -1 உடன் அணைக்கப்படலாம்.
இரண்டு விசைகளும் ஏற்கப்பட்டு முந்தைய பதிப்புகளில் சரியாகப் புகாரளிக்கப்பட்டன, ஆனால் எதுவும் செயல்படுத்தப்படவில்லை - வரிசை கட்டப்படாமல் வளர்ந்தது. உங்கள் பயன்பாடு அதை நம்பியிருந்தால், பழைய நடத்தையை வைத்திருக்க maxDaysToPersist: -1 ஐ வெளிப்படையாக அமைக்கவும். maxDaysToPersist ஆனது முன்பு ஆவணப்படுத்தப்பட்ட 1 ஐ விட 3 க்கு இயல்புநிலையாக உள்ளது, எனவே அமலாக்கத்தை இயக்குவது ஆஃப்லைன் வார இறுதியின் தரவை அதன் கடைசி நாள் வரை குறைக்காது.
ஒவ்வொரு பிழைத்திருத்தத்திலும் இயங்குவதற்குப் பதிலாக 100 செருகல்களுக்கு மேல் கத்தரித்து மாற்றியமைக்கப்படுகிறது, எனவே ஒவ்வொரு இடத்திலும் DELETE இணைக்கப்படவில்லை. எனவே வரிசையானது maxRecordsToPersist + 100 ஆல் கட்டுப்படுத்தப்படுகிறது மற்றும் ஒவ்வொரு ப்ரூனிலும் தொப்பியை மீண்டும் வெட்டுகிறது - இது வளர்ச்சியைக் கட்டுப்படுத்துகிறது, இது ஒரு நுழைவு உச்சவரம்பு அல்ல. ப்ரூன்களை அறிமுகப்படுத்திய பிறகு முதல் செருகல், எனவே முந்தைய பதிப்பில் இருந்து எடுத்துச் செல்லப்பட்ட பேக்லாக் அடுத்த திருத்தத்தில் அழிக்கப்படும்.
தக்கவைத்தல் ஒரு இருப்பிடத்தின் தணிக்கை-பாதை உள்ளீட்டை அதனுடன் நீக்குகிறது, எனவே கத்தரித்தல் அனாதை சங்கிலி வரிசைகளை பின்னால் விட முடியாது. ஒவ்வொரு பதிவின் சொந்த நேர முத்திரையிலிருந்து வயது எடுக்கப்படுகிறது; நேர முத்திரையைப் படிக்க முடியாத ஒரு பதிவு பழையதாகக் கருதப்படுவதற்குப் பதிலாக வைக்கப்படுகிறது, அதற்குப் பதிலாக பதிவுத் தொப்பியால் கட்டுப்படுத்தப்படுகிறது.
5. டேட்டாவை அழித்தல்
பயனர் வெளியேறினால் அல்லது அவரது கணக்கை வெளிப்படையாக நீக்கினால், GDPR/HIPAA உடன் இணங்க அவர்களின் இருப்பிட வரலாற்றை அழிக்க வேண்டும்.
அனைத்தையும் அழிக்கவும்
இது இருப்பிட தரவுத்தளத்தை முற்றிலும் சுத்தமாக அழிக்கிறது.
await tl.Tracelet.destroyLocations();குறிப்பிட்ட இடத்தை அழிக்கவும்
உங்களுக்கு UUID தெரிந்தால், ஒரு குறிப்பிட்ட இடத்தை அழிக்கலாம்.
UUID எங்கே கிடைக்கும்?
ட்ரேஸ்லெட்டால் உருவாக்கப்பட்ட ஒவ்வொரு இருப்பிடத்திற்கும் ஒரு தனிப்பட்ட uuid தானாகவே ஒதுக்கப்படும். getLocations() ஐ அழைத்து Location பொருளில் உள்ள uuid சொத்தை படித்து இந்த ஐடியைப் பெறலாம்.
final locations = await tl.Tracelet.getLocations();
if (locations.isNotEmpty) {
final firstLocationId = locations.first.uuid;
// Destroy just this specific location from the database
await tl.Tracelet.destroyLocation(firstLocationId);
}ஒத்திசைவை அழிக்கவும்
பொதுவாக Tracelet ஆனது உங்கள் சர்வரில் இருந்து HTTP 200 சரியைப் பெற்ற பிறகு தானாகவே இருப்பிடங்களை நீக்கிவிடும். இருப்பினும், நீங்கள் கைமுறையாக ஒத்திசைக்கிறீர்கள் என்றால், இந்த சுத்தம் செய்வதை கைமுறையாகத் தூண்டலாம்.
await tl.Tracelet.destroySyncedLocations();