Files
Handwerks_app/services/auftrag_repository.dart
JUSN 9ddce354c0 Feature
ein paar feature aber datenbank macht probleme wenn man aufträge speichern möchge
2026-04-05 12:47:57 +02:00

90 lines
2.3 KiB
Dart

// 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<String> _uid() async {
final u = await _account.get();
return u.$id;
}
List<String> _docPermissions(String uid) => [
Permission.read(Role.user(uid)),
Permission.update(Role.user(uid)),
Permission.delete(Role.user(uid)),
];
Future<List<Auftrag>> 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<Auftrag?> 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<void> speichern({
required String id,
required Auftrag daten,
bool isNeu = false,
}) async {
final uid = await _uid();
final payload = Map<String, dynamic>.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<void> loeschen(String id) async {
await _db.deleteDocument(
databaseId: kAppwriteDatabaseId,
collectionId: kAppwriteCollectionId,
documentId: id,
);
}
}