import 'package:drift/drift.dart'; import 'package:timetrack/core/database/app_database.dart'; import 'package:timetrack/core/database/tables/projects_table.dart'; part 'projects_dao.g.dart'; @DriftAccessor(tables: [Projects]) class ProjectsDao extends DatabaseAccessor with _$ProjectsDaoMixin { ProjectsDao(super.db); Stream> watchAll() => select(projects).watch(); Stream> watchActive() => (select(projects) ..where((t) => t.archivedAt.isNull())) .watch(); Future getById(int id) => (select(projects)..where((t) => t.id.equals(id))).getSingleOrNull(); Future insertProject(ProjectsCompanion companion) => into(projects).insert(companion); Future updateProject(ProjectsCompanion companion) => update(projects).replace(companion); Future deleteProject(int id) => (delete(projects)..where((t) => t.id.equals(id))).go(); Future archiveProject(int id) => (update(projects) ..where((t) => t.id.equals(id))) .write(ProjectsCompanion(archivedAt: Value(DateTime.now()))); Future unarchiveProject(int id) => (update(projects) ..where((t) => t.id.equals(id))) .write(const ProjectsCompanion(archivedAt: Value(null))); }