Align backend workbench API with prototype

This commit is contained in:
2026-07-19 21:46:43 +08:00
parent 1fcec3e0b5
commit 03a5c52b72
8 changed files with 644 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package models
import "time"
type SenlinAgentCronPlan struct {
ID uint `gorm:"primaryKey"`
Identity string `gorm:"type:char(36);uniqueIndex"`
ProjectID uint `gorm:"index;not null"`
ProjectIdentity string `gorm:"type:char(36);index"`
CreatedBy uint `gorm:"index;not null"`
CreatedByIdentity string `gorm:"type:char(36);index"`
Title string `gorm:"not null"`
Schedule string `gorm:"not null"`
NextRunAt *time.Time
Enabled bool `gorm:"not null;default:false"`
LastResult string
CreatedAt time.Time
UpdatedAt time.Time
}
func (SenlinAgentCronPlan) TableName() string {
return "senlin_agent_cron_plans"
}

View File

@@ -87,6 +87,23 @@ func (m *SenlinAgentTag) BeforeCreate(tx *gorm.DB) error {
return resolveIdentity(tx, &SenlinAgentProject{}, m.ProjectID, &m.ProjectIdentity)
}
func (m *SenlinAgentProjectChannel) BeforeCreate(tx *gorm.DB) error {
if err := ensureIdentity(&m.Identity); err != nil {
return err
}
return resolveIdentity(tx, &SenlinAgentProject{}, m.ProjectID, &m.ProjectIdentity)
}
func (m *SenlinAgentCronPlan) BeforeCreate(tx *gorm.DB) error {
if err := ensureIdentity(&m.Identity); err != nil {
return err
}
if err := resolveIdentity(tx, &SenlinAgentProject{}, m.ProjectID, &m.ProjectIdentity); err != nil {
return err
}
return resolveIdentity(tx, &SenlinAgentUser{}, m.CreatedBy, &m.CreatedByIdentity)
}
func (m *SenlinAgentProjectEvent) BeforeCreate(tx *gorm.DB) error {
if err := ensureIdentity(&m.Identity); err != nil {
return err

View File

@@ -31,6 +31,8 @@ func AutoMigrate(database *gorm.DB) error {
&SenlinAgentSource{},
&SenlinAgentAISession{},
&SenlinAgentTag{},
&SenlinAgentProjectChannel{},
&SenlinAgentCronPlan{},
&SenlinAgentProjectEvent{},
&SenlinAgentAIKey{},
&SenlinAgentAICallLog{},

View File

@@ -0,0 +1,20 @@
package models
import "time"
type SenlinAgentProjectChannel struct {
ID uint `gorm:"primaryKey"`
Identity string `gorm:"type:char(36);uniqueIndex"`
ProjectID uint `gorm:"index;not null"`
ProjectIdentity string `gorm:"type:char(36);index"`
Title string `gorm:"not null"`
Icon string `gorm:"not null;default:link"`
URL string `gorm:"not null"`
SortOrder int `gorm:"not null;default:0"`
CreatedAt time.Time
UpdatedAt time.Time
}
func (SenlinAgentProjectChannel) TableName() string {
return "senlin_agent_project_channels"
}