H-289: add Captain Skill management API (#46)
* H-289: add Captain Skill management API * H-289: guard Captain Skill updates with CAS * H-289: version all Captain Skill updates --------- Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
type CaptainSkillStatus string
|
||||
|
||||
const (
|
||||
CaptainSkillStatusDraft CaptainSkillStatus = "draft"
|
||||
CaptainSkillStatusActive CaptainSkillStatus = "active"
|
||||
CaptainSkillStatusArchived CaptainSkillStatus = "archived"
|
||||
)
|
||||
|
||||
type CaptainSkill struct {
|
||||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||||
AccountID uint `gorm:"not null;uniqueIndex:idx_captain_skills_account_name" json:"account_id"`
|
||||
Name string `gorm:"size:255;not null;uniqueIndex:idx_captain_skills_account_name" json:"name"`
|
||||
Description string `gorm:"size:1024;not null" json:"description"`
|
||||
InstructionsMD string `gorm:"type:text;not null" json:"instructions_md"`
|
||||
Status CaptainSkillStatus `gorm:"size:20;not null;default:draft;index" json:"status"`
|
||||
Version uint `gorm:"not null;default:1" json:"version"`
|
||||
References []CaptainSkillReference `gorm:"foreignKey:SkillID;constraint:OnDelete:CASCADE" json:"references,omitempty"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
}
|
||||
|
||||
func (CaptainSkill) TableName() string { return "captain_skills" }
|
||||
|
||||
type CaptainSkillReference struct {
|
||||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||||
SkillID uint `gorm:"not null;uniqueIndex:idx_captain_skill_refs_key;uniqueIndex:idx_captain_skill_refs_position" json:"skill_id"`
|
||||
ReferenceKey string `gorm:"size:255;not null;uniqueIndex:idx_captain_skill_refs_key" json:"reference_key"`
|
||||
ContentMD string `gorm:"type:text;not null" json:"content_md"`
|
||||
Position int `gorm:"not null;uniqueIndex:idx_captain_skill_refs_position" json:"position"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
}
|
||||
|
||||
func (CaptainSkillReference) TableName() string { return "captain_skill_references" }
|
||||
|
||||
type CaptainAssistantSkill struct {
|
||||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||||
AccountID uint `gorm:"not null;index" json:"account_id"`
|
||||
AssistantID uint `gorm:"not null;uniqueIndex:idx_captain_assistant_skill" json:"assistant_id"`
|
||||
SkillID uint `gorm:"not null;uniqueIndex:idx_captain_assistant_skill;index" json:"skill_id"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
}
|
||||
|
||||
func (CaptainAssistantSkill) TableName() string { return "captain_assistant_skills" }
|
||||
Reference in New Issue
Block a user