Files
hpc/internal/model/template.go
dailz fbfd5c5f42 feat: 添加数据模型和存储层
- model: JobTemplate、SubmitJobRequest、JobHistoryQuery 等模型定义

- store: NewGormDB MySQL 连接池,使用 zap 日志替代 GORM 默认日志

- store: TemplateStore CRUD 操作,支持 GORM AutoMigrate

- NewGormDB 接受 gormLevel 参数,由上层传入配置值

- 完整 TDD 测试覆盖

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 08:39:30 +08:00

46 lines
1.9 KiB
Go

package model
import "time"
// JobTemplate represents a saved job template.
type JobTemplate struct {
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
Name string `json:"name" gorm:"uniqueIndex;size:255;not null"`
Description string `json:"description,omitempty" gorm:"type:text"`
Script string `json:"script" gorm:"type:text;not null"`
Partition string `json:"partition,omitempty" gorm:"size:255"`
QOS string `json:"qos,omitempty" gorm:"column:qos;size:255"`
CPUs int `json:"cpus,omitempty" gorm:"column:cpus"`
Memory string `json:"memory,omitempty" gorm:"size:50"`
TimeLimit string `json:"time_limit,omitempty" gorm:"column:time_limit;size:50"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// TableName specifies the database table name for GORM.
func (JobTemplate) TableName() string { return "job_templates" }
// CreateTemplateRequest is the API request for creating a template.
type CreateTemplateRequest struct {
Name string `json:"name" binding:"required"`
Description string `json:"description,omitempty"`
Script string `json:"script" binding:"required"`
Partition string `json:"partition,omitempty"`
QOS string `json:"qos,omitempty"`
CPUs int `json:"cpus,omitempty"`
Memory string `json:"memory,omitempty"`
TimeLimit string `json:"time_limit,omitempty"`
}
// UpdateTemplateRequest is the API request for updating a template.
type UpdateTemplateRequest struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Script string `json:"script,omitempty"`
Partition string `json:"partition,omitempty"`
QOS string `json:"qos,omitempty"`
CPUs int `json:"cpus,omitempty"`
Memory string `json:"memory,omitempty"`
TimeLimit string `json:"time_limit,omitempty"`
}