package entity import ( "github.com/google/uuid" "time" ) type ArticleApprovalFlows struct { ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"` ArticleId uint `json:"article_id" gorm:"type:int4;not null"` WorkflowId uint `json:"workflow_id" gorm:"type:int4;not null"` CurrentStep int `json:"current_step" gorm:"type:int4;default:1"` StatusId int `json:"status_id" gorm:"type:int4;default:1"` // 1=pending, 2=approved, 3=rejected, 4=revision_requested SubmittedById uint `json:"submitted_by_id" gorm:"type:int4;not null"` SubmittedAt time.Time `json:"submitted_at" gorm:"default:now()"` CompletedAt *time.Time `json:"completed_at" gorm:"type:timestamp"` RejectionReason *string `json:"rejection_reason" gorm:"type:text"` RevisionRequested *bool `json:"revision_requested" gorm:"type:bool;default:false"` RevisionMessage *string `json:"revision_message" gorm:"type:text"` ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"` CreatedAt time.Time `json:"created_at" gorm:"default:now()"` UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` // Relations Article Articles `json:"article" gorm:"foreignKey:ArticleId;constraint:OnDelete:CASCADE"` Workflow ApprovalWorkflows `json:"workflow" gorm:"foreignKey:WorkflowId"` SubmittedBy *Users `json:"submitted_by" gorm:"foreignKey:SubmittedById"` StepLogs []ArticleApprovalStepLogs `json:"step_logs" gorm:"foreignKey:ApprovalFlowId;constraint:OnDelete:CASCADE"` }