From 99fff5d5af19f3a625b17bfedaf1c9a6be4a0556 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 3 Sep 2026 10:17:11 +0800 Subject: [PATCH] fix(contracts): decouple DTOs from ORM tags and table name mappings --- backend/core/contracts/config.go | 19 +++++++------------ backend/core/contracts/task.go | 5 ----- backend/core/contracts/upload.go | 23 +++++++++-------------- 3 files changed, 16 insertions(+), 31 deletions(-) diff --git a/backend/core/contracts/config.go b/backend/core/contracts/config.go index 2ffdef2e..0a17928c 100644 --- a/backend/core/contracts/config.go +++ b/backend/core/contracts/config.go @@ -10,18 +10,13 @@ import ( // SystemConfigDTO represents a system configuration key-value entry. type SystemConfigDTO struct { - Key string `json:"key" gorm:"primaryKey;column:key;size:255"` - Value string `json:"value" gorm:"column:value;type:text"` - Type string `json:"type" gorm:"column:type;size:50"` - Visibility int `json:"visibility" gorm:"column:visibility"` - Description string `json:"description" gorm:"column:description;size:500"` - UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at"` - CreatedAt time.Time `json:"created_at" gorm:"column:created_at"` -} - -// TableName returns the default table name for SystemConfigDTO. -func (SystemConfigDTO) TableName() string { - return "w_system_configs" + Key string `json:"key"` + Value string `json:"value"` + Type string `json:"type"` + Visibility int `json:"visibility"` + Description string `json:"description"` + UpdatedAt time.Time `json:"updated_at"` + CreatedAt time.Time `json:"created_at"` } // SystemConfigService defines the unified contract for querying and mutating system configurations. diff --git a/backend/core/contracts/task.go b/backend/core/contracts/task.go index cf9bac13..efd05de6 100644 --- a/backend/core/contracts/task.go +++ b/backend/core/contracts/task.go @@ -71,11 +71,6 @@ type TaskExecutionDTO struct { UpdatedAt time.Time `json:"updated_at"` } -// TableName returns the default table name for TaskExecutionDTO. -func (TaskExecutionDTO) TableName() string { - return "w_task_executions" -} - // Canonical triggered_by values persisted on task executions and shown in admin UI. const ( TaskTriggerSystem = "system" diff --git a/backend/core/contracts/upload.go b/backend/core/contracts/upload.go index 3798edcd..0bb5b4d6 100644 --- a/backend/core/contracts/upload.go +++ b/backend/core/contracts/upload.go @@ -23,25 +23,20 @@ type UploadMetadataDTO struct { // UploadDTO represents an uploaded file record. type UploadDTO struct { - ID uint64 `json:"id" gorm:"primaryKey"` - UserID uint64 `json:"user_id" gorm:"index"` - FileName string `json:"file_name" gorm:"size:255"` - FilePath string `json:"file_path" gorm:"size:500"` - MimeType string `json:"mime_type" gorm:"size:100"` + ID uint64 `json:"id"` + UserID uint64 `json:"user_id"` + FileName string `json:"file_name"` + FilePath string `json:"file_path"` + MimeType string `json:"mime_type"` Size int64 `json:"size"` - Hash string `json:"hash" gorm:"size:64"` - Status string `json:"status" gorm:"type:varchar(20)"` - Type string `json:"type" gorm:"size:50;index"` - Metadata UploadMetadataDTO `json:"metadata" gorm:"serializer:json;type:jsonb"` + Hash string `json:"hash"` + Status string `json:"status"` + Type string `json:"type"` + Metadata UploadMetadataDTO `json:"metadata"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } -// TableName returns the default table name for UploadDTO. -func (UploadDTO) TableName() string { - return "w_uploads" -} - // OpenedUploadDTO encapsulates the retrieved object stream and its metadata. type OpenedUploadDTO struct { Upload UploadDTO