docxTemplater/dal/model/workerTask.go

68 lines
3.0 KiB
Go
Raw Normal View History

2022-12-31 14:46:28 +00:00
package model
import (
"time"
)
type WorkerTask struct {
ID string `json:"id" bson:"_id,omitempty"` // Идентификатор задачи
UserID string `json:"user_id" bson:"user_id"` // Пользователь пены
AmoID string `json:"amo_id" bson:"amo_id"` // Амо аккаунт вызвавший генерацию
AmoUserID int64 `json:"amo_user_id" bson:"amo_user_id"` // Пользователь амо вызвавший генерацию
Status WorkerTaskStatus `json:"status" bson:"status"` // Статус генерации
LeadId int64 `json:"lead_id" bson:"lead_id"` // Сделка по которой происходит генерация
TemplateID string `json:"template_id" bson:"template_id"` // Шаблон для генерации
Source WorkerSource `json:"source" bson:"source"` // Исходный файл-шаблон
Target WorkerTarget `json:"target" bson:"target"` // Куда отправить результат
DownloadUrl string `json:"download_url" bson:"download_url"` // Ссылка для скачивания результата
PublicUrl string `json:"public_url" bson:"public_url"` // Публичная ссылка для просмотра\редактирования\скачивания
2022-12-31 14:46:28 +00:00
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"` // Время последнего обновления
CreatedAt time.Time `json:"created_at" bson:"created_at"` // Время создания
}
func NewWorkerTask(userID string, amoID string, amoUserID int64, status WorkerTaskStatus, leadId int64,
templateID string, source WorkerSource, target WorkerTarget) *WorkerTask {
return &WorkerTask{
UserID: userID,
AmoID: amoID,
AmoUserID: amoUserID,
Status: status,
LeadId: leadId,
TemplateID: templateID,
Source: source,
Target: target,
}
}
type WorkerTaskStatus string
func (s WorkerTaskStatus) String() string {
return string(s)
}
const (
WorkerTaskStatusNew = "new"
WorkerTaskStatusDone = "done"
WorkerTaskStatusFailed = "failed"
WorkerTaskStatusPending = "pending"
WorkerTaskStatusTimeout = "timeout"
WorkerTaskStatusProcessing = "processing"
)
func (s WorkerTaskStatus) Valid() bool {
return s == WorkerTaskStatusDone || s == WorkerTaskStatusFailed || s == WorkerTaskStatusPending ||
s == WorkerTaskStatusTimeout || s == WorkerTaskStatusProcessing || s == WorkerTaskStatusNew
}
type WorkerSource struct {
File string `bson:"file" json:"file"`
StorageID string `bson:"storage_id" json:"storage_id"`
StorageType string `bson:"storage_type" json:"storage_type"`
}
type WorkerTarget struct {
File string `bson:"file" json:"file"`
StorageID string `bson:"storage_id" json:"storage_id"`
StorageType string `bson:"storage_type" json:"storage_type"`
}