feat: Refactor entity types to include BaseEntity properties and update date handling

This commit is contained in:
Jean Jacques Avril 2025-03-09 20:37:03 +00:00
parent b2328b4e0c
commit 86f4c757e3
7 changed files with 44 additions and 8 deletions

View File

@ -1,9 +1,14 @@
import { BaseEntity } from "./base";
import { ActivityDto, ActivityCreateDto, ActivityUpdateDto } from "./dto"; import { ActivityDto, ActivityCreateDto, ActivityUpdateDto } from "./dto";
import { UserId } from "./value-ids";
export type Activity = ActivityDto; export type Activity = Omit<ActivityDto, "createdAt" | "updatedAt" | "lastEditorID"> & BaseEntity;
export const mapActivityDtoToActivity = (dto: ActivityDto): Activity => ({ export const mapActivityDtoToActivity = (dto: ActivityDto): Activity => ({
...dto, ...dto,
createdAt: new Date(dto.createdAt),
updatedAt: new Date(dto.updatedAt),
lastEditorID: dto.lastEditorID as UserId,
}); });
export type ActivityCreate = ActivityCreateDto; export type ActivityCreate = ActivityCreateDto;

View File

@ -1,9 +1,14 @@
import { BaseEntity } from "./base";
import { CompanyDto, CompanyCreateDto, CompanyUpdateDto } from "./dto"; import { CompanyDto, CompanyCreateDto, CompanyUpdateDto } from "./dto";
import { UserId } from "./value-ids";
export type Company = CompanyDto; export type Company = Omit<CompanyDto, "createdAt" | "updatedAt" | "lastEditorID"> & BaseEntity;
export const mapCompanyDtoToCompany = (dto: CompanyDto): Company => ({ export const mapCompanyDtoToCompany = (dto: CompanyDto): Company => ({
...dto, ...dto,
createdAt: new Date(dto.createdAt),
updatedAt: new Date(dto.updatedAt),
lastEditorID: dto.lastEditorID as UserId,
}); });
export type CompanyCreate = CompanyCreateDto; export type CompanyCreate = CompanyCreateDto;

View File

@ -1,9 +1,14 @@
import { BaseEntity } from "./base";
import { CustomerDto, CustomerCreateDto, CustomerUpdateDto } from "./dto"; import { CustomerDto, CustomerCreateDto, CustomerUpdateDto } from "./dto";
import { UserId } from "./value-ids";
export type Customer = CustomerDto; export type Customer = Omit<CustomerDto, "createdAt" | "updatedAt" | "lastEditorID"> & BaseEntity;
export const mapCustomerDtoToCustomer = (dto: CustomerDto): Customer => ({ export const mapCustomerDtoToCustomer = (dto: CustomerDto): Customer => ({
...dto, ...dto,
createdAt: new Date(dto.createdAt),
updatedAt: new Date(dto.updatedAt),
lastEditorID: dto.lastEditorID as UserId,
}); });
export type CustomerCreate = CustomerCreateDto; export type CustomerCreate = CustomerCreateDto;

View File

@ -1,9 +1,14 @@
import { BaseEntity } from "./base";
import { ProjectDto, ProjectCreateDto, ProjectUpdateDto } from "./dto"; import { ProjectDto, ProjectCreateDto, ProjectUpdateDto } from "./dto";
import { UserId } from "./value-ids";
export type Project = ProjectDto; export type Project = Omit<ProjectDto, "createdAt" | "updatedAt" | "lastEditorID"> & BaseEntity;
export const mapProjectDtoToProject = (dto: ProjectDto): Project => ({ export const mapProjectDtoToProject = (dto: ProjectDto): Project => ({
...dto, ...dto,
createdAt: new Date(dto.createdAt),
updatedAt: new Date(dto.updatedAt),
lastEditorID: dto.lastEditorID as UserId,
}); });
export type ProjectCreate = ProjectCreateDto; export type ProjectCreate = ProjectCreateDto;

View File

@ -1,14 +1,25 @@
import { BaseEntity } from "./base";
import { TimeEntryDto, TimeEntryCreateDto, TimeEntryUpdateDto } from "./dto"; import { TimeEntryDto, TimeEntryCreateDto, TimeEntryUpdateDto } from "./dto";
import { UserId, ProjectId, ActivityId } from "./value-ids";
export type TimeEntry = Omit<TimeEntryDto, "start" | "end"> & { export type TimeEntry = Omit<TimeEntryDto, "start" | "end" | "userId" | "projectId" | "activityId" | "lastEditorID" | "createdAt" | "updatedAt"> & {
start: Date; start: Date;
end: Date; end: Date;
}; userId: UserId;
projectId: ProjectId;
activityId: ActivityId;
} & BaseEntity;
export const mapTimeEntryDtoToTimeEntry = (dto: TimeEntryDto): TimeEntry => ({ export const mapTimeEntryDtoToTimeEntry = (dto: TimeEntryDto): TimeEntry => ({
...dto, ...dto,
start: new Date(dto.start), start: new Date(dto.start),
end: new Date(dto.end), end: new Date(dto.end),
userId: dto.userId.toString() as UserId,
projectId: dto.projectId.toString() as ProjectId,
activityId: dto.activityId.toString() as ActivityId,
createdAt: new Date(dto.createdAt),
updatedAt: new Date(dto.updatedAt),
lastEditorID: dto.lastEditorID as UserId,
}); });
export type TimeEntryCreate = Omit<TimeEntryCreateDto, "start" | "end"> & { export type TimeEntryCreate = Omit<TimeEntryCreateDto, "start" | "end"> & {

View File

@ -1,10 +1,14 @@
import { BaseEntity } from "./base"; import { BaseEntity } from "./base";
import { UserDto, UserCreateDto, UserUpdateDto } from "./dto"; import { UserDto, UserCreateDto, UserUpdateDto } from "./dto";
import { UserId } from "./value-ids";
export type User = Omit<UserDto & BaseEntity, never>; export type User = Omit<UserDto, "createdAt" | "updatedAt" | "lastEditorID"> & BaseEntity;
export const mapUserDtoToUser = (dto: UserDto): User => ({ export const mapUserDtoToUser = (dto: UserDto): User => ({
...dto, ...dto,
createdAt: new Date(dto.createdAt),
updatedAt: new Date(dto.updatedAt),
lastEditorID: dto.lastEditorID as UserId,
}); });
export type UserCreate = Omit<UserCreateDto, never>; export type UserCreate = Omit<UserCreateDto, never>;

View File

@ -6,4 +6,5 @@ export type TimeEntryId = ValueId<"TimeEntryId">;
export type CompanyId = ValueId<"CompanyId">; export type CompanyId = ValueId<"CompanyId">;
export type UserId = ValueId<"UserId">; export type UserId = ValueId<"UserId">;
export type RoleId = ValueId<"RoleId">; export type RoleId = ValueId<"RoleId">;
export type PermissionId = ValueId<"PermissionId">; export type PermissionId = ValueId<"PermissionId">;
export type ActivityId = ValueId<"ActivityId">;