add auth and user handling
This commit is contained in:
parent
db057ce342
commit
1fce467571
19 changed files with 356 additions and 32 deletions
|
|
@ -0,0 +1,31 @@
|
|||
import { AbstractDto } from "../dtos/AbstractDto";
|
||||
import { AbstractEntity } from "../entities/AbstractEntity";
|
||||
|
||||
export abstract class AbstractDtoEntityMapper<
|
||||
E extends AbstractEntity,
|
||||
D extends AbstractDto
|
||||
> {
|
||||
/**
|
||||
* Map base entity fields (id, createdAt, updatedAt) to DTO.
|
||||
*/
|
||||
protected mapBaseEntityToDto(entity: E, dto: D): D {
|
||||
dto.id = entity.id;
|
||||
dto.createdAt = entity.createdAt;
|
||||
dto.updatedAt = entity.updatedAt;
|
||||
return dto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map base DTO fields to entity.
|
||||
*/
|
||||
protected mapBaseDtoToEntity(dto: D, entity: E): E {
|
||||
entity.id = dto.id;
|
||||
entity.createdAt = dto.createdAt;
|
||||
entity.updatedAt = dto.updatedAt;
|
||||
return entity;
|
||||
}
|
||||
|
||||
// Abstract methods to be implemented by subclasses
|
||||
abstract toDto(entity: E): D;
|
||||
abstract toEntity(dto: D): E;
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
import { AbstractDtoEntityMapper } from "./AbstractDtoEntityMapper";
|
||||
import { UserEntity } from "../entities/UserEntity";
|
||||
import { UserDto } from "../dtos/UserDto";
|
||||
|
||||
export class UserDtoEntityMapper extends AbstractDtoEntityMapper<UserEntity, UserDto> {
|
||||
toDto(entity: UserEntity): UserDto {
|
||||
const dto = new UserDto();
|
||||
this.mapBaseEntityToDto(entity, dto);
|
||||
|
||||
dto.userName = entity.userName;
|
||||
dto.email = entity.email;
|
||||
dto.firstName = entity.firstName;
|
||||
dto.lastName = entity.lastName;
|
||||
dto.role = entity.role;
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
toEntity(dto: UserDto): UserEntity {
|
||||
const entity = new UserEntity();
|
||||
this.mapBaseDtoToEntity(dto, entity);
|
||||
|
||||
entity.userName = dto.userName;
|
||||
entity.email = dto.email;
|
||||
// ⚠️ Don’t forget password handling — usually set elsewhere, not exposed in DTO
|
||||
entity.firstName = dto.firstName;
|
||||
entity.lastName = dto.lastName;
|
||||
entity.role = dto.role;
|
||||
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue