timetracker/lib/features/projects/domain/projects_provider.dart
2026-08-03 21:51:48 +02:00

39 lines
1.2 KiB
Dart

import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:timetrack/features/projects/data/drift_projects_repository.dart';
import 'package:timetrack/features/projects/data/projects_repository.dart';
import 'package:timetrack/features/projects/domain/project.dart';
part 'projects_provider.g.dart';
@riverpod
Stream<List<Project>> activeProjects(ActiveProjectsRef ref) =>
ref.watch(projectsRepositoryProvider).watchActive();
@riverpod
Stream<List<Project>> allProjects(AllProjectsRef ref) =>
ref.watch(projectsRepositoryProvider).watchAll();
@riverpod
class ProjectsNotifier extends _$ProjectsNotifier {
@override
Future<void> build() async {}
ProjectsRepository get _repo => ref.read(projectsRepositoryProvider);
Future<void> create({
required String name,
required int colorValue,
String? description,
}) async {
await _repo.create(name: name, colorValue: colorValue, description: description);
}
Future<void> updateProject(Project project) => _repo.update(project);
Future<void> archive(int id) => _repo.archive(id);
Future<void> unarchive(int id) => _repo.unarchive(id);
Future<void> delete(int id) => _repo.delete(id);
}