kontenhumas-be/app/database/entity/approval_workflow_steps.ent...

37 lines
1.9 KiB
Go

package entity
import (
"time"
"github.com/google/uuid"
)
type ApprovalWorkflowSteps struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
WorkflowId uint `json:"workflow_id" gorm:"type:int4;not null"`
StepOrder int `json:"step_order" gorm:"type:int4;not null"`
StepName string `json:"step_name" gorm:"type:varchar;not null"`
RequiredUserLevelId uint `json:"required_user_level_id" gorm:"type:int4;not null"`
CanSkip *bool `json:"can_skip" gorm:"type:bool;default:false"`
AutoApproveAfterHours *int `json:"auto_approve_after_hours" gorm:"type:int4"`
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
// Multi-branch support fields
ParentStepId *uint `json:"parent_step_id" gorm:"type:int4;references:approval_workflow_steps(id)"`
ConditionType *string `json:"condition_type" gorm:"type:varchar(50)"` // 'user_level', 'user_level_hierarchy', 'always', 'custom'
ConditionValue *string `json:"condition_value" gorm:"type:text"` // JSON string for conditions
IsParallel *bool `json:"is_parallel" gorm:"type:bool;default:false"`
BranchName *string `json:"branch_name" gorm:"type:varchar(100)"`
BranchOrder *int `json:"branch_order" gorm:"type:int4"` // Order within the same branch
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
Workflow ApprovalWorkflows `json:"workflow" gorm:"foreignKey:WorkflowId;constraint:OnDelete:CASCADE"`
RequiredUserLevel UserLevels `json:"required_user_level" gorm:"foreignKey:RequiredUserLevelId"`
ParentStep *ApprovalWorkflowSteps `json:"parent_step" gorm:"foreignKey:ParentStepId"`
ChildSteps []ApprovalWorkflowSteps `json:"child_steps" gorm:"foreignKey:ParentStepId"`
}