import 'package:appwrite/appwrite.dart'; import 'package:appwrite/models.dart'; import 'package:ltx_flutter/appwrite/appwrite.dart'; import 'package:ltx_flutter/constants/constants.dart'; import 'package:intl/intl.dart'; class DatabaseAPI { Client client = Client(); late final Account account; late final Databases databases; final AuthAPI auth = AuthAPI(); final DateFormat formatter = DateFormat('yyyy-MM-dd'); DatabaseAPI() { init(); } init() { client .setEndpoint(APPWRITE_URL) .setProject(APPWRITE_PROJECT_ID) .setSelfSigned(); account = Account(client); databases = Databases(client); } Future getEntries({int limit = 100, String dateISO = ""}) { if (dateISO == "") { dateISO = formatter.format(DateTime.now()); } final date = DateTime.parse(dateISO); final offset = date.difference(DateTime.now()).inDays; print("Getting ${limit} entries starting from ${offset}"); return databases.listDocuments( databaseId: APPWRITE_DATABASE_ID, collectionId: COLLECTION, queries: [ Query.orderAsc("date"), Query.offset(offset), Query.limit(limit), ]); } Future addEntry( {required String date, List hours = const [], int mood = -1, String comments = ""}) { return databases.createDocument( databaseId: APPWRITE_DATABASE_ID, collectionId: COLLECTION, documentId: date, data: { 'date': DateTime.parse(date), 'hours': hours, 'mood': mood, 'comments': comments }); } Future deleteEntry({required String date}) { return databases.deleteDocument( databaseId: APPWRITE_DATABASE_ID, collectionId: COLLECTION, documentId: date); } }