refactor: remove repeating code etc

This commit is contained in:
2025-03-12 13:52:34 +00:00
parent 294047a2b0
commit b9c900578d
20 changed files with 529 additions and 683 deletions
+28
View File
@@ -0,0 +1,28 @@
package dto
import (
"time"
)
type ActivityDto struct {
ID string `json:"id" example:"a1b2c3d4e5f6"`
CreatedAt time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID string `json:"lastEditorID" example:"u1v2w3x4y5z6"`
Name string `json:"name" example:"Development"`
BillingRate float64 `json:"billingRate" example:"100.00"`
}
type ActivityCreateDto struct {
Name string `json:"name" example:"Development"`
BillingRate float64 `json:"billingRate" example:"100.00"`
}
type ActivityUpdateDto struct {
ID string `json:"id" example:"a1b2c3d4e5f6"`
CreatedAt *time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt *time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID *string `json:"lastEditorID" example:"u1v2w3x4y5z6"`
Name *string `json:"name" example:"Development"`
BillingRate *float64 `json:"billingRate" example:"100.00"`
}
+13
View File
@@ -0,0 +1,13 @@
package dto
// LoginDto represents the login request
type LoginDto struct {
Email string `json:"email" example:"admin@example.com"`
Password string `json:"password" example:"Admin@123456"`
}
// TokenDto represents the response after successful authentication
type TokenDto struct {
Token string `json:"token" example:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"`
User UserDto `json:"user"`
}
+23
View File
@@ -0,0 +1,23 @@
package dto
import (
"time"
)
type CompanyDto struct {
ID string `json:"id" example:"01HGW2BBG0000000000000000"`
CreatedAt time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID string `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
Name string `json:"name" example:"Acme Corp"`
}
type CompanyCreateDto struct {
Name string `json:"name" example:"Acme Corp"`
}
type CompanyUpdateDto struct {
CreatedAt *time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt *time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
Name *string `json:"name" example:"Acme Corp"`
}
+32
View File
@@ -0,0 +1,32 @@
package dto
import (
"time"
"github.com/timetracker/backend/internal/types"
)
type CustomerDto struct {
ID string `json:"id" example:"01HGW2BBG0000000000000000"`
CreatedAt time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID string `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
Name string `json:"name" example:"John Doe"`
CompanyID *string `json:"companyId" example:"01HGW2BBG0000000000000000"`
OwnerUserID *string `json:"owningUserID" example:"01HGW2BBG0000000000000000"`
}
type CustomerCreateDto struct {
Name string `json:"name" example:"John Doe"`
CompanyID *string `json:"companyId" example:"01HGW2BBG0000000000000000"`
}
type CustomerUpdateDto struct {
ID string `json:"id" example:"01HGW2BBG0000000000000000"`
CreatedAt *time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt *time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID *string `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
Name *string `json:"name" example:"John Doe"`
CompanyID types.Nullable[string] `json:"companyId" example:"01HGW2BBG0000000000000000"`
OwnerUserID types.Nullable[string] `json:"owningUserID" example:"01HGW2BBG0000000000000000"`
}
+28
View File
@@ -0,0 +1,28 @@
package dto
import (
"time"
"github.com/timetracker/backend/internal/types"
)
type ProjectDto struct {
ID string `json:"id" example:"01HGW2BBG0000000000000000"`
CreatedAt time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID string `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
Name string `json:"name" example:"Time Tracking App"`
CustomerID *string `json:"customerId" example:"01HGW2BBG0000000000000000"`
}
type ProjectCreateDto struct {
Name string `json:"name" example:"Time Tracking App"`
CustomerID *string `json:"customerId" example:"01HGW2BBG0000000000000000"`
}
type ProjectUpdateDto struct {
CreatedAt *time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt *time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
Name *string `json:"name" example:"Time Tracking App"`
CustomerID types.Nullable[string] `json:"customerId" example:"01HGW2BBG0000000000000000"`
}
+41
View File
@@ -0,0 +1,41 @@
package dto
import (
"time"
)
type TimeEntryDto struct {
ID string `json:"id" example:"01HGW2BBG0000000000000000"`
CreatedAt time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID string `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
UserID string `json:"userId" example:"01HGW2BBG0000000000000000"`
ProjectID string `json:"projectId" example:"01HGW2BBG0000000000000000"`
ActivityID string `json:"activityId" example:"01HGW2BBG0000000000000000"`
Start time.Time `json:"start" example:"2024-01-01T08:00:00Z"`
End time.Time `json:"end" example:"2024-01-01T17:00:00Z"`
Description string `json:"description" example:"Working on the Time Tracking App"`
Billable int `json:"billable" example:"100"` // Percentage (0-100)
}
type TimeEntryCreateDto struct {
UserID string `json:"userId" example:"01HGW2BBG0000000000000000"`
ProjectID string `json:"projectId" example:"01HGW2BBG0000000000000000"`
ActivityID string `json:"activityId" example:"01HGW2BBG0000000000000000"`
Start time.Time `json:"start" example:"2024-01-01T08:00:00Z"`
End time.Time `json:"end" example:"2024-01-01T17:00:00Z"`
Description string `json:"description" example:"Working on the Time Tracking App"`
Billable int `json:"billable" example:"100"` // Percentage (0-100)
}
type TimeEntryUpdateDto struct {
CreatedAt *time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt *time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
UserID *string `json:"userId" example:"01HGW2BBG0000000000000000"`
ProjectID *string `json:"projectId" example:"01HGW2BBG0000000000000000"`
ActivityID *string `json:"activityId" example:"01HGW2BBG0000000000000000"`
Start *time.Time `json:"start" example:"2024-01-01T08:00:00Z"`
End *time.Time `json:"end" example:"2024-01-01T17:00:00Z"`
Description *string `json:"description" example:"Working on the Time Tracking App"`
Billable *int `json:"billable" example:"100"` // Percentage (0-100)
}
+37
View File
@@ -0,0 +1,37 @@
package dto
import (
"time"
"github.com/timetracker/backend/internal/types"
)
type UserDto struct {
ID string `json:"id" example:"01HGW2BBG0000000000000000"`
CreatedAt time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID string `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
Email string `json:"email" example:"test@example.com"`
Role string `json:"role" example:"admin"`
CompanyID *string `json:"companyId,omitempty" example:"01HGW2BBG0000000000000000"`
HourlyRate float64 `json:"hourlyRate" example:"50.00"`
}
type UserCreateDto struct {
Email string `json:"email" example:"test@example.com"`
Password string `json:"password" example:"password123"`
Role string `json:"role" example:"admin"`
CompanyID *string `json:"companyId" example:"01HGW2BBG0000000000000000"`
HourlyRate float64 `json:"hourlyRate" example:"50.00"`
}
type UserUpdateDto struct {
CreatedAt *time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
UpdatedAt *time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
LastEditorID *string `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
Email *string `json:"email" example:"test@example.com"`
Password *string `json:"password" example:"password123"`
Role *string `json:"role" example:"admin"`
CompanyID types.Nullable[string] `json:"companyId" example:"01HGW2BBG0000000000000000"`
HourlyRate *float64 `json:"hourlyRate" example:"50.00"`
}