feat: Add create and update DTOs for Company, Customer, Project, Activity, User, and TimeEntry entities

This commit is contained in:
2025-03-09 19:55:23 +00:00
parent 0402b8ac65
commit 9749d5658c
22 changed files with 430 additions and 67 deletions
+19
View File
@@ -0,0 +1,19 @@
import { ActivityDto, ActivityCreateDto, ActivityUpdateDto } from "./dto";
export type Activity = ActivityDto;
export const mapActivityDtoToActivity = (dto: ActivityDto): Activity => ({
...dto,
});
export type ActivityCreate = ActivityCreateDto;
export const mapActivityCreateDtoToActivityCreate = (dto: ActivityCreateDto): ActivityCreate => ({
...dto,
});
export type ActivityUpdate = ActivityUpdateDto;
export const mapActivityUpdateDtoToActivityUpdate = (dto: ActivityUpdateDto): ActivityUpdate => ({
...dto,
});
+19
View File
@@ -0,0 +1,19 @@
import { CompanyDto, CompanyCreateDto, CompanyUpdateDto } from "./dto";
export type Company = CompanyDto;
export const mapCompanyDtoToCompany = (dto: CompanyDto): Company => ({
...dto,
});
export type CompanyCreate = CompanyCreateDto;
export const mapCompanyCreateDtoToCompanyCreate = (dto: CompanyCreateDto): CompanyCreate => ({
...dto,
});
export type CompanyUpdate = CompanyUpdateDto;
export const mapCompanyUpdateDtoToCompanyUpdate = (dto: CompanyUpdateDto): CompanyUpdate => ({
...dto,
});
+19
View File
@@ -0,0 +1,19 @@
import { CustomerDto, CustomerCreateDto, CustomerUpdateDto } from "./dto";
export type Customer = CustomerDto;
export const mapCustomerDtoToCustomer = (dto: CustomerDto): Customer => ({
...dto,
});
export type CustomerCreate = CustomerCreateDto;
export const mapCustomerCreateDtoToCustomerCreate = (dto: CustomerCreateDto): CustomerCreate => ({
...dto,
});
export type CustomerUpdate = CustomerUpdateDto;
export const mapCustomerUpdateDtoToCustomerUpdate = (dto: CustomerUpdateDto): CustomerUpdate => ({
...dto,
});
+130
View File
@@ -0,0 +1,130 @@
// Code generated by tygo. DO NOT EDIT.
//////////
// source: activity_dto.go
export interface ActivityDto {
id: string;
name: string;
billingRate: number /* float64 */;
}
export interface ActivityCreateDto {
name: string;
billingRate: number /* float64 */;
}
export interface ActivityUpdateDto {
id: string;
name?: string;
billingRate?: number /* float64 */;
}
//////////
// source: company_dto.go
export interface CompanyDto {
id: string;
name: string;
}
export interface CompanyCreateDto {
name: string;
}
export interface CompanyUpdateDto {
id: string;
name?: string;
}
//////////
// source: customer_dto.go
export interface CustomerDto {
id: string;
name: string;
companyId: number /* int */;
}
export interface CustomerCreateDto {
name: string;
companyId: number /* int */;
}
export interface CustomerUpdateDto {
id: string;
name?: string;
companyId?: number /* int */;
}
//////////
// source: project_dto.go
export interface ProjectDto {
id: string;
name: string;
customerId: number /* int */;
}
export interface ProjectCreateDto {
name: string;
customerId: number /* int */;
}
export interface ProjectUpdateDto {
id: string;
name?: string;
customerId?: number /* int */;
}
//////////
// source: timeentry_dto.go
export interface TimeEntryDto {
id: string;
userId: number /* int */;
projectId: number /* int */;
activityId: number /* int */;
start: string;
end: string;
description: string;
billable: number /* int */; // Percentage (0-100)
}
export interface TimeEntryCreateDto {
userId: number /* int */;
projectId: number /* int */;
activityId: number /* int */;
start: string;
end: string;
description: string;
billable: number /* int */; // Percentage (0-100)
}
export interface TimeEntryUpdateDto {
id: string;
userId?: number /* int */;
projectId?: number /* int */;
activityId?: number /* int */;
start?: string;
end?: string;
description?: string;
billable?: number /* int */; // Percentage (0-100)
}
//////////
// source: user_dto.go
export interface UserDto {
id: string;
username: string;
password: string; // Note: In a real application, you would NEVER send the password in a DTO. This is just for demonstration.
role: string;
companyId: number /* int */;
hourlyRate: number /* float64 */;
}
export interface UserCreateDto {
username: string;
password: string; // Note: In a real application, you would NEVER send the password in a DTO. This is just for demonstration.
role: string;
companyId: number /* int */;
hourlyRate: number /* float64 */;
}
export interface UserUpdateDto {
id: string;
username?: string;
password?: string; // Note: In a real application, you would NEVER send the password in a DTO. This is just for demonstration.
role?: string;
companyId?: number /* int */;
hourlyRate?: number /* float64 */;
}
-62
View File
@@ -1,62 +0,0 @@
// Code generated by tygo. DO NOT EDIT.
//////////
// source: activity_dto.go
export interface ActivityDto {
id: string;
name: string;
billingRate: number /* float64 */;
}
//////////
// source: company_dto.go
export interface CompanyDto {
id: string;
name: string;
}
//////////
// source: customer_dto.go
export interface CustomerDto {
id: string;
name: string;
companyId: number /* int */;
}
//////////
// source: project_dto.go
export interface ProjectDto {
id: string;
name: string;
customerId: number /* int */;
}
//////////
// source: timeentry_dto.go
export interface TimeEntryDto {
id: string;
userId: number /* int */;
projectId: number /* int */;
activityId: number /* int */;
start: string;
end: string;
description: string;
billable: number /* int */; // Percentage (0-100)
}
//////////
// source: user_dto.go
export interface UserDto {
id: string;
username: string;
password: string; // Note: In a real application, you would NEVER send the password in a DTO. This is just for demonstration.
role: string;
companyId: number /* int */;
hourlyRate: number /* float64 */;
}
+19
View File
@@ -0,0 +1,19 @@
import { ProjectDto, ProjectCreateDto, ProjectUpdateDto } from "./dto";
export type Project = ProjectDto;
export const mapProjectDtoToProject = (dto: ProjectDto): Project => ({
...dto,
});
export type ProjectCreate = ProjectCreateDto;
export const mapProjectCreateDtoToProjectCreate = (dto: ProjectCreateDto): ProjectCreate => ({
...dto,
});
export type ProjectUpdate = ProjectUpdateDto;
export const mapProjectUpdateDtoToProjectUpdate = (dto: ProjectUpdateDto): ProjectUpdate => ({
...dto,
});
+34
View File
@@ -0,0 +1,34 @@
import { TimeEntryDto, TimeEntryCreateDto, TimeEntryUpdateDto } from "./dto";
export type TimeEntry = Omit<TimeEntryDto, "start" | "end"> & {
start: Date;
end: Date;
};
export const mapTimeEntryDtoToTimeEntry = (dto: TimeEntryDto): TimeEntry => ({
...dto,
start: new Date(dto.start),
end: new Date(dto.end),
});
export type TimeEntryCreate = Omit<TimeEntryCreateDto, "start" | "end"> & {
start: Date;
end: Date;
};
export const mapTimeEntryCreateDtoToTimeEntryCreate = (dto: TimeEntryCreateDto): TimeEntryCreate => ({
...dto,
start: new Date(dto.start),
end: new Date(dto.end),
});
export type TimeEntryUpdate = Omit<TimeEntryUpdateDto, "start" | "end"> & {
start?: Date;
end?: Date;
};
export const mapTimeEntryUpdateDtoToTimeEntryUpdate = (dto: TimeEntryUpdateDto): TimeEntryUpdate => ({
...dto,
start: dto.start ? new Date(dto.start) : undefined,
end: dto.end ? new Date(dto.end) : undefined,
});
+19
View File
@@ -0,0 +1,19 @@
import { UserDto, UserCreateDto, UserUpdateDto } from "./dto";
export type User = Omit<UserDto, never>;
export const mapUserDtoToUser = (dto: UserDto): User => ({
...dto,
});
export type UserCreate = Omit<UserCreateDto, never>;
export const mapUserCreateDtoToUserCreate = (dto: UserCreateDto): UserCreate => ({
...dto,
});
export type UserUpdate = Omit<UserUpdateDto, never>;
export const mapUserUpdateDtoToUserUpdate = (dto: UserUpdateDto): UserUpdate => ({
...dto,
});