74 lines
1.9 KiB
Dart
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);
|
|
}
|
|
}
|