implemented other repos, services, objects ...

This commit is contained in:
2025-01-01 21:36:20 +00:00
parent 6d980a980e
commit 10c72f22c5
51 changed files with 5940 additions and 502 deletions
@@ -0,0 +1,38 @@
import 'package:backend_dart/domain/data/database.dart';
import 'package:backend_dart/domain/entities/project.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/repository/project_repository.dart';
import 'package:fpdart/fpdart.dart';
class ProjectRepositoryImpl implements ProjectRepository {
final IDatabase database;
ProjectRepositoryImpl(this.database);
@override
TaskEither<IError, Project> create(ProjectCreate project) {
return database.projects
.generateId()
.map((id) => project.copyWith(id: id))
.flatMap(database.projects.create);
}
@override
TaskEither<IError, Project> findById(String id) {
return database.projects.findById(id);
}
@override
TaskEither<IError, Project> update(ProjectUpdate project) {
return database.projects.update(project);
}
@override
TaskEither<IError, void> delete(String id) {
return database.projects.delete(id);
}
@override
TaskEither<IError, List<Project>> findAll() {
return database.projects.findAll();
}
}
@@ -0,0 +1,43 @@
import 'package:backend_dart/domain/data/database.dart';
import 'package:backend_dart/domain/entities/project_task.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/repository/project_task_repository.dart';
import 'package:fpdart/fpdart.dart';
class ProjectTaskRepositoryImpl implements ProjectTaskRepository {
final IDatabase database;
ProjectTaskRepositoryImpl(this.database);
@override
TaskEither<IError, ProjectTask> create(ProjectTaskCreate task) {
return database.tasks
.generateId()
.map((id) => task.copyWith(id: id))
.flatMap(database.tasks.create);
}
@override
TaskEither<IError, ProjectTask> findById(String id) {
return database.tasks.findById(id);
}
@override
TaskEither<IError, List<ProjectTask>> findByProjectId(String projectId) {
return database.tasks.findByProjectId(projectId);
}
@override
TaskEither<IError, ProjectTask> update(ProjectTaskUpdate task) {
return database.tasks.update(task);
}
@override
TaskEither<IError, void> delete(String id) {
return database.tasks.delete(id);
}
@override
TaskEither<IError, List<ProjectTask>> findAll() {
return database.tasks.findAll();
}
}
@@ -1,4 +1,10 @@
import 'package:backend_dart/application/repository/project_repository_impl.dart';
import 'package:backend_dart/application/repository/project_task_repository_impl.dart';
import 'package:backend_dart/application/repository/time_entry_repository_impl.dart';
import 'package:backend_dart/application/repository/user_repository_impl.dart';
import 'package:backend_dart/domain/repository/project_repository.dart';
import 'package:backend_dart/domain/repository/project_task_repository.dart';
import 'package:backend_dart/domain/repository/time_entry_repository.dart';
import 'package:backend_dart/domain/repository/user_repository.dart';
import 'package:backend_dart/infrastructure/persistence/database_provider.dart';
import 'package:riverpod/riverpod.dart';
@@ -7,3 +13,18 @@ final userRepoProvider = Provider<UserRepository>((ref) {
final database = ref.read(databaseProvider);
return UserRepositoryImpl(database);
});
final projectTaskProvider = Provider<ProjectTaskRepository>((ref) {
final database = ref.read(databaseProvider);
return ProjectTaskRepositoryImpl(database);
});
final projectProvider = Provider<ProjectRepository>((ref) {
final database = ref.read(databaseProvider);
return ProjectRepositoryImpl(database);
});
final timeEntryProvider = Provider<TimeEntryRepository>((ref) {
final database = ref.read(databaseProvider);
return TimeEntryRepositoryImpl(database);
});
@@ -0,0 +1,48 @@
import 'package:backend_dart/domain/data/database.dart';
import 'package:backend_dart/domain/entities/time_entry.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/repository/time_entry_repository.dart';
import 'package:fpdart/fpdart.dart';
class TimeEntryRepositoryImpl implements TimeEntryRepository {
final IDatabase database;
TimeEntryRepositoryImpl(this.database);
@override
TaskEither<IError, TimeEntry> create(TimeEntryCreate timeEntry) {
return database.timeEntries
.generateId()
.map((id) => timeEntry.copyWith(id: id))
.flatMap(database.timeEntries.create);
}
@override
TaskEither<IError, TimeEntry> findById(String id) {
return database.timeEntries.findById(id);
}
@override
TaskEither<IError, List<TimeEntry>> findByUserId(String userId) {
return database.timeEntries.findByUserId(userId);
}
@override
TaskEither<IError, List<TimeEntry>> findByProjectId(String projectId) {
return database.timeEntries.findByProjectId(projectId);
}
@override
TaskEither<IError, TimeEntry> update(TimeEntryUpdate timeEntry) {
return database.timeEntries.update(timeEntry);
}
@override
TaskEither<IError, void> delete(String id) {
return database.timeEntries.delete(id);
}
@override
TaskEither<IError, List<TimeEntry>> findAll() {
return database.timeEntries.findAll();
}
}