blob: 94024b209dddfd5fd633df2650510f99bcb166ae [file]
package model
import (
"github.com/google/uuid"
"gorm.io/gorm"
)
type BatchProcessStatusType string
const (
BatchProcessStatusTypeCreated BatchProcessStatusType = "CREATED"
BatchProcessStatusTypeSubmitted BatchProcessStatusType = "SUBMITTED"
BatchProcessStatusTypeRunning BatchProcessStatusType = "RUNNING"
BatchProcessStatusTypeCompleted BatchProcessStatusType = "COMPLETED"
BatchProcessStatusTypeFailed BatchProcessStatusType = "FAILED"
)
type BatchJobProcessStatus struct {
ID string `gorm:"column:process_status_id;primaryKey;type:varchar(36)" json:"processStatusId"`
ProcessID *string `gorm:"column:process_id;type:varchar(36);index" json:"processId,omitempty"`
Process *BatchJobProcess `gorm:"references:ID;constraint:OnDelete:RESTRICT,OnUpdate:CASCADE" json:"-"`
Status *BatchProcessStatusType `gorm:"column:status;type:varchar(255)" json:"status,omitempty"`
Log *string `gorm:"column:log;type:text" json:"log,omitempty"`
// The time the status was recorded, in milliseconds since the epoch.
Timestamp *int64 `gorm:"column:timestamp" json:"timestamp,omitempty"`
}
// TableName returns the table backing BatchJobProcessStatus.
func (BatchJobProcessStatus) TableName() string { return "batch_job_process_statuses" }
func (s *BatchJobProcessStatus) BeforeCreate(*gorm.DB) error {
if s.ID == "" {
s.ID = uuid.NewString()
}
return nil
}
func (s *BatchJobProcessStatus) AfterCreate(tx *gorm.DB) error {
if s.ProcessID == nil || *s.ProcessID == "" {
return nil
}
return tx.Model(&BatchJobProcess{}).
Where("process_id = ?", *s.ProcessID).
Update("last_status_id", s.ID).Error
}