refactor user repo with helpers. better api validation etc.
This commit is contained in:
@@ -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),
|
||||
));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user