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"` }