डेटा दृढ़ता एपीआई
ट्रैसलेट ऑफ़लाइन-प्रथम आर्किटेक्चर का उपयोग करके डेटा डिलीवरी की गारंटी देता है। प्रत्येक स्थान समन्वय, गतिविधि परिवर्तन और जियोफेंस घटना तुरंत एन्क्रिप्टेड स्थानीय 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 क्वेरीज़
आपको हर चीज़ लाने की ज़रूरत नहीं है. ट्रैसलेट एक SQLQuery ऑब्जेक्ट को उजागर करता है जो आपको डेटाबेस को बिल्कुल मानक SQL की तरह फ़िल्टर करने की अनुमति देता है।
// 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. अभिलेखों की गिनती
यदि आपको बस यह जानना है कि कितने स्थान बैकलॉग हैं (उदाहरण के लिए, आपके यूआई में “ऑफ़लाइन सिंक क्यू” बैज दिखाने के लिए), 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');दोनों समय-सीमा फ़िल्टरिंग के लिए एक वैकल्पिक SQLQuery स्वीकार करते हैं, बिल्कुल getLocations() / getCount() की तरह।
4. डेटा नष्ट करना
यदि उपयोगकर्ता लॉग आउट करता है, या स्पष्ट रूप से अपना खाता हटा देता है, तो आपको जीडीपीआर/एचआईपीएए का अनुपालन करने के लिए उनका स्थान इतिहास नष्ट करना होगा।
सभी को नष्ट करो
यह स्थान डेटाबेस को पूरी तरह से साफ़ कर देता है।
await tl.Tracelet.destroyLocations();विशिष्ट स्थान को नष्ट करें
यदि आप किसी एकल, विशिष्ट स्थान का यूयूआईडी जानते हैं तो उसे नष्ट कर सकते हैं।
आपको यूयूआईडी कहां से मिलेगा?
ट्रैसलेट द्वारा उत्पन्न प्रत्येक स्थान को स्वचालित रूप से एक अद्वितीय 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);
}सिंक किए गए को नष्ट करें
आमतौर पर ट्रैसलेट आपके सर्वर से HTTP 200 ओके प्राप्त करने के बाद स्वचालित रूप से स्थानों को हटा देता है। हालाँकि, यदि आप मैन्युअल सिंकिंग कर रहे हैं, तो आप इस क्लीनअप को मैन्युअल रूप से ट्रिगर कर सकते हैं।
await tl.Tracelet.destroySyncedLocations();