refactor user repo with helpers. better api validation etc.

This commit is contained in:
2025-01-01 19:58:19 +00:00
parent 8559b1c44e
commit 4d52186d21
23 changed files with 1802 additions and 237 deletions
@@ -1,37 +1,40 @@
import 'package:backend_dart/common/extensions.dart';
import 'package:backend_dart/common/secure_hash.dart';
import 'package:backend_dart/domain/entities/user.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/interface/mapper.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 UserDboMapper implements IMapper<User, UserDbo> {
@override
class UserDboMapper {
TaskEither<IError, User> from(UserDbo target) => TaskEither.of(User(
id: target.id!,
name: target.name!,
email: target.email!,
password: target.password,
passwordHash: target.password,
createdAt: target.createdAt,
updatedAt: target.updatedAt,
));
@override
TaskEither<IError, List<User>> listFrom(Iterable<UserDbo> targets) {
return TaskEither.traverseList(targets.toList(), from);
}
@override
TaskEither<IError, List<UserDbo>> listTo(Iterable<User> origins) {
return TaskEither.traverseList(origins.toList(), to);
}
TaskEither<IError, UserDboUncheckedUpdateInput> fromUpdateTo(
UserUpdate origin) =>
TaskEither.of(UserDboUncheckedUpdateInput(
id: PrismaUnion.$1(origin.id),
name: origin.name.let(PrismaUnion.$1),
email: origin.email.let(PrismaUnion.$1),
password: origin.password.let(generateSecureHash).let(PrismaUnion.$1),
));
@override
TaskEither<IError, UserDbo> to(User origin) => TaskEither.of(UserDbo(
TaskEither<IError, UserDboCreateInput> fromCreateTo(UserCreate origin) =>
TaskEither.of(UserDboCreateInput(
id: origin.id,
name: origin.name,
email: origin.email,
password: origin.password,
createdAt: origin.createdAt,
updatedAt: origin.updatedAt,
password: generateSecureHash(origin.password),
));
}