Firebase database gist
Sun Nov 27 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
Saved by @yashmakan #flutter
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:healum/utils/trackers.dart'; import 'package:intl/intl.dart'; class DataBase { final database = FirebaseFirestore.instance; isUserAdded(String uid) async { return (await database.collection("users").doc(uid).get()).exists; } addUser(String uid) async { DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); await database .collection('users') .doc(uid) .set((await deviceInfo.androidInfo).toMap()); } pushTrackerData( Tracker tracker, String uid, Map<String, dynamic> trackerData) async { DateTime dateTime = DateTime.now(); Map<String, dynamic> data = { "date_added_on": Timestamp.now(), "day_added_on": DateFormat('EEEE').format(dateTime) }; data.addEntries(trackerData.entries); await database .collection('users') .doc(uid) .collection(tracker.key) .doc() .set(data); } getFirstTrackerData(Tracker tracker, String uid) async { try { return (await database .collection('users') .doc(uid) .collection(tracker.key) .orderBy("date_added_on", descending: true) .limit(1) .get()) .docChanges .first .doc .data()['value'] .toString(); } catch (_) { return null; } } updateSpecificTrackerDataByTimestamp( Tracker tracker, String uid, Timestamp timestamp) async { final doc = (await database .collection('users') .doc(uid) .collection(tracker.key) .where("date_added_on", isEqualTo: timestamp) .limit(1) .get()) .docChanges .first .doc .reference; Map existingData = (await doc.get()).data(); print(existingData); existingData['value'] = tracker.value; var batch = database.batch(); batch.update(doc, existingData); await batch.commit(); } Future<List> getAllTrackerData(Tracker tracker, String uid) async { try { var snapshotList = (await database .collection('users') .doc(uid) .collection(tracker.key) .orderBy("date_added_on", descending: true) .get()) .docChanges; List<Map<String, dynamic>> mapList = snapshotList.map((e) => e.doc.data()).toList(); return mapList; } catch (_) { return null; } } }
Comments