qudoco-be/app/module/client_approval_settings/request/client_approval_settings.re...

86 lines
4.1 KiB
Go
Raw Permalink Normal View History

2026-02-24 09:37:19 +00:00
package request
// CreateClientApprovalSettingsRequest represents request for creating client approval settings
type CreateClientApprovalSettingsRequest struct {
RequiresApproval bool `json:"requiresApproval"`
DefaultWorkflowId *uint `json:"defaultWorkflowId" validate:"omitempty,min=1"`
AutoPublishArticles bool `json:"autoPublishArticles"`
ApprovalExemptUsers []uint `json:"approvalExemptUsers" validate:"omitempty,dive,min=1"`
ApprovalExemptRoles []uint `json:"approvalExemptRoles" validate:"omitempty,dive,min=1"`
ApprovalExemptCategories []uint `json:"approvalExemptCategories" validate:"omitempty,dive,min=1"`
RequireApprovalFor []string `json:"requireApprovalFor" validate:"omitempty,dive,min=1"`
SkipApprovalFor []string `json:"skipApprovalFor" validate:"omitempty,dive,min=1"`
IsActive bool `json:"isActive"`
}
// UpdateClientApprovalSettingsRequest represents request for updating client approval settings
type UpdateClientApprovalSettingsRequest struct {
RequiresApproval *bool `json:"requiresApproval"`
DefaultWorkflowId **uint `json:"defaultWorkflowId"` // double pointer to allow nil
AutoPublishArticles *bool `json:"autoPublishArticles"`
ApprovalExemptUsers []uint `json:"approvalExemptUsers" validate:"omitempty,dive,min=1"`
ApprovalExemptRoles []uint `json:"approvalExemptRoles" validate:"omitempty,dive,min=1"`
ApprovalExemptCategories []uint `json:"approvalExemptCategories" validate:"omitempty,dive,min=1"`
RequireApprovalFor []string `json:"requireApprovalFor" validate:"omitempty,dive,min=1"`
SkipApprovalFor []string `json:"skipApprovalFor" validate:"omitempty,dive,min=1"`
IsActive *bool `json:"isActive"`
}
// ToggleApprovalRequest represents request for toggling approval requirement
type ToggleApprovalRequest struct {
RequiresApproval bool `json:"requiresApproval"`
}
// EnableApprovalRequest represents request for enabling approval with smooth transition
type EnableApprovalRequest struct {
DefaultWorkflowId *uint `json:"defaultWorkflowId" validate:"omitempty,min=1"`
Reason string `json:"reason" validate:"omitempty,max=500"`
}
// DisableApprovalRequest represents request for disabling approval system
type DisableApprovalRequest struct {
Reason string `json:"reason" validate:"required,max=500"`
HandleAction string `json:"handleAction" validate:"required,oneof=auto_approve keep_pending reset_to_draft"` // How to handle pending articles
}
// SetDefaultWorkflowRequest represents request for setting default workflow
type SetDefaultWorkflowRequest struct {
WorkflowId *uint `json:"workflowId" validate:"omitempty,min=1"`
}
// AddExemptUserRequest represents request for adding user to exemption
type AddExemptUserRequest struct {
UserId uint `json:"userId" validate:"required,min=1"`
Reason string `json:"reason" validate:"omitempty,max=500"`
}
// RemoveExemptUserRequest represents request for removing user from exemption
type RemoveExemptUserRequest struct {
UserId uint `json:"userId" validate:"required,min=1"`
Reason string `json:"reason" validate:"omitempty,max=500"`
}
// AddExemptRoleRequest represents request for adding role to exemption
type AddExemptRoleRequest struct {
RoleId uint `json:"roleId" validate:"required,min=1"`
Reason string `json:"reason" validate:"omitempty,max=500"`
}
// RemoveExemptRoleRequest represents request for removing role from exemption
type RemoveExemptRoleRequest struct {
RoleId uint `json:"roleId" validate:"required,min=1"`
Reason string `json:"reason" validate:"omitempty,max=500"`
}
// AddExemptCategoryRequest represents request for adding category to exemption
type AddExemptCategoryRequest struct {
CategoryId uint `json:"categoryId" validate:"required,min=1"`
Reason string `json:"reason" validate:"omitempty,max=500"`
}
// RemoveExemptCategoryRequest represents request for removing category from exemption
type RemoveExemptCategoryRequest struct {
CategoryId uint `json:"categoryId" validate:"required,min=1"`
Reason string `json:"reason" validate:"omitempty,max=500"`
}