mirror of
https://github.com/Receipt-Wrangler/receipt-wrangler-api.git
synced 2026-01-12 22:20:08 -06:00
109 lines
3.8 KiB
Go
109 lines
3.8 KiB
Go
package models
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
type SystemTask struct {
|
|
BaseModel
|
|
Type SystemTaskType `json:"type"`
|
|
Status SystemTaskStatus `json:"status"`
|
|
AssociatedEntityType AssociatedEntityType `json:"associatedEntityType"`
|
|
AssociatedEntityId uint `json:"associatedEntityId"`
|
|
StartedAt time.Time `json:"startedAt"`
|
|
EndedAt *time.Time `json:"endedAt"`
|
|
ResultDescription string `json:"resultDescription"`
|
|
RanByUserId *uint `json:"ranByUserId"`
|
|
ReceiptId *uint `json:"receiptId"`
|
|
GroupId *uint `json:"groupId"`
|
|
AssociatedSystemTask *SystemTask `json:"associatedSystemTask"`
|
|
AssociatedSystemTaskId *uint `json:"associatedSystemTaskId"`
|
|
ChildSystemTasks []*SystemTask `gorm:"foreignKey:AssociatedSystemTaskId" json:"childSystemTasks"`
|
|
AsynqTaskId string `json:"asynqTaskId"`
|
|
}
|
|
|
|
type SystemTaskStatus string
|
|
|
|
const (
|
|
SYSTEM_TASK_SUCCEEDED SystemTaskStatus = "SUCCEEDED"
|
|
SYSTEM_TASK_FAILED SystemTaskStatus = "FAILED"
|
|
)
|
|
|
|
func (self *SystemTaskStatus) Scan(value string) error {
|
|
*self = SystemTaskStatus(value)
|
|
return nil
|
|
}
|
|
|
|
func (self SystemTaskStatus) Value() (driver.Value, error) {
|
|
if self != SYSTEM_TASK_SUCCEEDED && self != SYSTEM_TASK_FAILED {
|
|
return nil, errors.New("invalid SystemTaskStatus")
|
|
}
|
|
return string(self), nil
|
|
}
|
|
|
|
type SystemTaskType string
|
|
|
|
const (
|
|
RECEIPT_UPLOADED SystemTaskType = "RECEIPT_UPLOADED"
|
|
OCR_PROCESSING SystemTaskType = "OCR_PROCESSING"
|
|
CHAT_COMPLETION SystemTaskType = "CHAT_COMPLETION"
|
|
MAGIC_FILL SystemTaskType = "MAGIC_FILL"
|
|
QUICK_SCAN SystemTaskType = "QUICK_SCAN"
|
|
EMAIL_UPLOAD SystemTaskType = "EMAIL_UPLOAD"
|
|
EMAIL_READ SystemTaskType = "EMAIL_READ"
|
|
SYSTEM_EMAIL_CONNECTIVITY_CHECK SystemTaskType = "SYSTEM_EMAIL_CONNECTIVITY_CHECK"
|
|
RECEIPT_PROCESSING_SETTINGS_CONNECTIVITY_CHECK SystemTaskType = "RECEIPT_PROCESSING_SETTINGS_CONNECTIVITY_CHECK"
|
|
PROMPT_GENERATED SystemTaskType = "PROMPT_GENERATED"
|
|
RECEIPT_UPDATED SystemTaskType = "RECEIPT_UPDATED"
|
|
)
|
|
|
|
func (self *SystemTaskType) Scan(value string) error {
|
|
*self = SystemTaskType(value)
|
|
return nil
|
|
}
|
|
|
|
func (self SystemTaskType) Value() (driver.Value, error) {
|
|
if self != SYSTEM_EMAIL_CONNECTIVITY_CHECK &&
|
|
self != RECEIPT_PROCESSING_SETTINGS_CONNECTIVITY_CHECK &&
|
|
self != QUICK_SCAN &&
|
|
self != MAGIC_FILL &&
|
|
self != EMAIL_UPLOAD &&
|
|
self != EMAIL_READ &&
|
|
self != CHAT_COMPLETION &&
|
|
self != OCR_PROCESSING &&
|
|
self != RECEIPT_UPLOADED &&
|
|
self != PROMPT_GENERATED &&
|
|
self != RECEIPT_UPDATED {
|
|
return nil, errors.New("invalid SystemTaskType")
|
|
}
|
|
return string(self), nil
|
|
}
|
|
|
|
type AssociatedEntityType string
|
|
|
|
const (
|
|
RECEIPT AssociatedEntityType = "RECEIPT"
|
|
SYSTEM_EMAIL AssociatedEntityType = "SYSTEM_EMAIL"
|
|
PROMPT AssociatedEntityType = "PROMPT"
|
|
RECEIPT_PROCESSING_SETTINGS AssociatedEntityType = "RECEIPT_PROCESSING_SETTINGS"
|
|
NOOP_ENTITY_TYPE AssociatedEntityType = "NOOP_ENTITY_TYPE"
|
|
)
|
|
|
|
func (self *AssociatedEntityType) Scan(value string) error {
|
|
*self = AssociatedEntityType(value)
|
|
return nil
|
|
}
|
|
|
|
func (self AssociatedEntityType) Value() (driver.Value, error) {
|
|
if self != SYSTEM_EMAIL &&
|
|
self != NOOP_ENTITY_TYPE &&
|
|
self != RECEIPT_PROCESSING_SETTINGS &&
|
|
self != RECEIPT &&
|
|
self != PROMPT {
|
|
return nil, errors.New("invalid AssociatedEntityType")
|
|
}
|
|
return string(self), nil
|
|
}
|