import 'dart:convert';
import 'package:comwell_key_app/database/comwell_db.dart';
import 'package:comwell_key_app/database/tables/notification_table.dart';
import 'package:comwell_key_app/domain/models/notification_permission.dart';
import 'package:comwell_key_app/utils/json.dart';
import 'package:drift/drift.dart';
part '../../.generated/database/daos/notifications_dao.g.dart';
@DriftAccessor(tables: [NotificationPermissionEntity])
class NotificationPermissionDAO extends DatabaseAccessor<ComwellDatabase>
with _$NotificationPermissionDAOMixin {
NotificationPermissionDAO(super.attachedDatabase);
Future<void> saveNotificationPermission(Iterable<NotificationPermission> permissions) async {
final permissionsList = permissions.toList();
await insert(permissionsList);
}
Future<void> insert(Iterable<NotificationPermission> permissions) async {
final entities = permissions.map((permission) {
final json = jsonEncode(permission.toJson());
return NotificationPermissionEntityCompanion.insert(code: permission.code, json: json);
});
await batch(
(batch) =>
batch.insertAll(notificationPermissionEntity, entities, mode: InsertMode.insertOrReplace),
);
}
Future<List<NotificationPermission>> getNotificationPermissions() async {
final permissions = await select(notificationPermissionEntity).get();
return permissions
.map((permission) => NotificationPermission.fromJson(jsonDecode(permission.json) as Json))
.toList();
}
}