added project repository

This commit is contained in:
2025-01-01 20:32:01 +00:00
parent 4d52186d21
commit 6d980a980e
7 changed files with 277 additions and 54 deletions
@@ -0,0 +1,64 @@
import 'package:backend_dart/common/extensions.dart';
import 'package:backend_dart/domain/entities/project.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/infrastructure/persistence/db/model.dart';
import 'package:backend_dart/infrastructure/persistence/db/prisma.dart';
import 'package:fpdart/fpdart.dart';
import 'package:orm/orm.dart';
class ProjectDboMapper {
TaskEither<IError, ProjectDbo> toDbo(Project project) {
return TaskEither.of(ProjectDbo(
id: project.id,
name: project.name,
description: project.description,
clientId: project.clientId,
userId: project.userId,
createdAt: project.createdAt,
updatedAt: project.updatedAt,
));
}
TaskEither<IError, Project> fromDbo(ProjectDbo dbo) {
return TaskEither.of(Project(
id: dbo.id!,
name: dbo.name!,
description: dbo.description,
clientId: dbo.clientId,
userId: dbo.userId!,
createdAt: dbo.createdAt!,
updatedAt: dbo.updatedAt!,
));
}
TaskEither<IError, ProjectDboCreateInput> fromCreatetoDbo(
ProjectCreate project) {
return TaskEither.of(ProjectDboCreateInput(
name: project.name,
description: project.description.let(PrismaUnion.$1),
clientId: project.clientId.let(PrismaUnion.$1),
user: UserDboCreateNestedOneWithoutProjectsInput(
connect: UserDboWhereUniqueInput(id: project.userId),
),
));
}
TaskEither<IError, ProjectDboUpdateInput> fromUpdateToDbo(
ProjectUpdate project) {
return TaskEither.of(ProjectDboUpdateInput(
id: PrismaUnion.$1(project.id),
name: project.name.let(PrismaUnion.$1),
description: project.description.let(PrismaUnion.$1),
clientId: project.clientId.let(PrismaUnion.$1),
user: project.userId.let(
(userId) => UserDboUpdateOneRequiredWithoutProjectsNestedInput(
connect: UserDboWhereUniqueInput(id: userId),
),
),
));
}
TaskEither<IError, List<Project>> listFrom(Iterable<ProjectDbo> dbos) {
return TaskEither.traverseList(dbos.toList(), fromDbo);
}
}
@@ -21,9 +21,8 @@ class UserDboMapper {
return TaskEither.traverseList(targets.toList(), from);
}
TaskEither<IError, UserDboUncheckedUpdateInput> fromUpdateTo(
UserUpdate origin) =>
TaskEither.of(UserDboUncheckedUpdateInput(
TaskEither<IError, UserDboUpdateInput> fromUpdateTo(UserUpdate origin) =>
TaskEither.of(UserDboUpdateInput(
id: PrismaUnion.$1(origin.id),
name: origin.name.let(PrismaUnion.$1),
email: origin.email.let(PrismaUnion.$1),