ltx-flutter/ltx_flutter/lib/appwrite/database_api.dart
2023-05-23 17:59:16 -07:00

74 lines
1.9 KiB
Dart

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<DocumentList> getEntries({int limit = 100, String dateISO = ""}) {
if (dateISO == "") {
dateISO = DateTime.now().toIso8601String();
}
var referenceDate = DateTime.parse("2023-01-01");
final date = DateTime.parse(dateISO);
final offset = date.difference(referenceDate).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<Document> 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<dynamic> deleteEntry({required String date}) {
return databases.deleteDocument(
databaseId: APPWRITE_DATABASE_ID,
collectionId: COLLECTION,
documentId: date);
}
}