// Appwrite 1.8+ empfiehlt TablesDB; klassische Collections laufen weiter über Databases. // ignore_for_file: deprecated_member_use import 'package:appwrite/appwrite.dart'; import '../appwrite_config.dart'; import '../models/auftrag.dart'; class AuftragRepository { AuftragRepository({Client? client}) : _db = Databases(client ?? appwriteClient), _account = Account(client ?? appwriteClient); final Databases _db; final Account _account; Future _uid() async { final u = await _account.get(); return u.$id; } List _docPermissions(String uid) => [ Permission.read(Role.user(uid)), Permission.update(Role.user(uid)), Permission.delete(Role.user(uid)), ]; Future> listAuftraege() async { final uid = await _uid(); final res = await _db.listDocuments( databaseId: kAppwriteDatabaseId, collectionId: kAppwriteCollectionId, queries: [ Query.equal('userId', uid), Query.orderDesc(r'$createdAt'), ], ); return res.documents.map(Auftrag.fromAppwriteDoc).toList(); } Future get(String id) async { try { final doc = await _db.getDocument( databaseId: kAppwriteDatabaseId, collectionId: kAppwriteCollectionId, documentId: id, ); return Auftrag.fromAppwriteDoc(doc); } catch (_) { return null; } } String neueId() => ID.unique(); Future speichern({ required String id, required Auftrag daten, bool isNeu = false, }) async { final uid = await _uid(); final payload = Map.from(daten.toMap()); payload['userId'] = uid; if (isNeu) { await _db.createDocument( databaseId: kAppwriteDatabaseId, collectionId: kAppwriteCollectionId, documentId: id, data: payload, permissions: _docPermissions(uid), ); } else { await _db.updateDocument( databaseId: kAppwriteDatabaseId, collectionId: kAppwriteCollectionId, documentId: id, data: payload, ); } } Future loeschen(String id) async { await _db.deleteDocument( databaseId: kAppwriteDatabaseId, collectionId: kAppwriteCollectionId, documentId: id, ); } }