Files
secunda_test/internal/domain/models.go
T
2026-06-22 14:31:01 +05:00

82 lines
1.9 KiB
Go

package domain
import "time"
type Role string
const (
RoleOwner Role = "owner"
RoleAdmin Role = "admin"
RoleMember Role = "member"
)
type TaskStatus string
const (
StatusTodo TaskStatus = "todo"
StatusInProgress TaskStatus = "in_progress"
StatusDone TaskStatus = "done"
)
type User struct {
ID int64
Email string
PasswordHash string
Name string
CreatedAt time.Time
}
type Team struct {
ID int64 `json:"id"`
Name string `json:"name"`
CreatedBy int64 `json:"created_by"`
Role Role `json:"role,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
type Task struct {
ID int64 `json:"id"`
TeamID int64 `json:"team_id"`
Title string `json:"title"`
Description string `json:"description"`
Status TaskStatus `json:"status"`
AssigneeID *int64 `json:"assignee_id,omitempty"`
CreatedBy int64 `json:"created_by"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type TaskHistory struct {
ID int64 `json:"id"`
TaskID int64 `json:"task_id"`
ChangedBy int64 `json:"changed_by"`
FieldName string `json:"field_name"`
OldValue *string `json:"old_value,omitempty"`
NewValue *string `json:"new_value,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
type TaskFilter struct {
TeamID int64
Status TaskStatus
AssigneeID *int64
Page int
PageSize int
}
type TeamSummary struct {
TeamID int64 `json:"team_id"`
TeamName string `json:"team_name"`
MembersCount int64 `json:"members_count"`
DoneLast7Days int64 `json:"done_last_7_days"`
}
type TopCreator struct {
TeamID int64 `json:"team_id"`
TeamName string `json:"team_name"`
UserID int64 `json:"user_id"`
UserName string `json:"user_name"`
TasksCreated int64 `json:"tasks_created"`
Rank int64 `json:"rank"`
}