qudoco-be/app/database/seeds/approval_workflows.seeds.go

112 lines
3.1 KiB
Go

package seeds
import (
"gorm.io/gorm"
"web-qudo-be/app/database/entity"
)
type ApprovalWorkflowsSeeder struct{}
// Sample 3-level approval workflow
var approvalWorkflows = []entity.ApprovalWorkflows{
{
ID: 1,
Name: "3-Level Approval Workflow",
Description: &[]string{"Standard 3-level approval workflow for articles: Editor -> Senior Editor -> Chief Editor"}[0],
IsActive: &[]bool{true}[0],
},
{
ID: 2,
Name: "2-Level Approval Workflow",
Description: &[]string{"Simple 2-level approval workflow: Editor -> Chief Editor"}[0],
IsActive: &[]bool{true}[0],
},
}
// Sample approval workflow steps for 3-level workflow
var approvalWorkflowSteps = []entity.ApprovalWorkflowSteps{
// 3-Level Workflow Steps
{
ID: 1,
WorkflowId: 1,
StepOrder: 1,
StepName: "Editor Review",
RequiredUserLevelId: 3, // Assuming Editor user level ID is 3
CanSkip: &[]bool{false}[0],
AutoApproveAfterHours: &[]int{24}[0],
IsActive: &[]bool{true}[0],
},
{
ID: 2,
WorkflowId: 1,
StepOrder: 2,
StepName: "Senior Editor Review",
RequiredUserLevelId: 4, // Assuming Senior Editor user level ID is 4
CanSkip: &[]bool{false}[0],
AutoApproveAfterHours: &[]int{48}[0],
IsActive: &[]bool{true}[0],
},
{
ID: 3,
WorkflowId: 1,
StepOrder: 3,
StepName: "Chief Editor Final Approval",
RequiredUserLevelId: 5, // Assuming Chief Editor user level ID is 5
CanSkip: &[]bool{false}[0],
AutoApproveAfterHours: &[]int{72}[0],
IsActive: &[]bool{true}[0],
},
// 2-Level Workflow Steps
{
ID: 4,
WorkflowId: 2,
StepOrder: 1,
StepName: "Editor Review",
RequiredUserLevelId: 3, // Editor user level
CanSkip: &[]bool{false}[0],
AutoApproveAfterHours: &[]int{24}[0],
IsActive: &[]bool{true}[0],
},
{
ID: 5,
WorkflowId: 2,
StepOrder: 2,
StepName: "Chief Editor Approval",
RequiredUserLevelId: 5, // Chief Editor user level
CanSkip: &[]bool{false}[0],
AutoApproveAfterHours: &[]int{48}[0],
IsActive: &[]bool{true}[0],
},
}
func (ApprovalWorkflowsSeeder) Seed(conn *gorm.DB) error {
// Seed approval workflows
for _, workflow := range approvalWorkflows {
if err := conn.Create(&workflow).Error; err != nil {
return err
}
}
// Seed approval workflow steps
for _, step := range approvalWorkflowSteps {
if err := conn.Create(&step).Error; err != nil {
return err
}
}
return nil
}
func (ApprovalWorkflowsSeeder) Count(conn *gorm.DB) (int, error) {
var workflowCount int64
if err := conn.Model(&entity.ApprovalWorkflows{}).Count(&workflowCount).Error; err != nil {
return 0, err
}
var stepCount int64
if err := conn.Model(&entity.ApprovalWorkflowSteps{}).Count(&stepCount).Error; err != nil {
return 0, err
}
return int(workflowCount + stepCount), nil
}