modelRT/orm/async_task_result.go

71 lines
1.8 KiB
Go

// Package orm define database data struct
package orm
import (
"github.com/gofrs/uuid"
)
// AsyncTaskResult stores computation results, separate from AsyncTask model for flexibility
type AsyncTaskResult struct {
TaskID uuid.UUID `gorm:"column:task_id;primaryKey;type:uuid"`
Result JSONMap `gorm:"column:result;type:jsonb"`
ErrorCode *int `gorm:"column:error_code"`
ErrorMessage *string `gorm:"column:error_message;type:text"`
ErrorDetail JSONMap `gorm:"column:error_detail;type:jsonb"`
}
// TableName returns the table name for AsyncTaskResult model
func (a *AsyncTaskResult) TableName() string {
return "async_task_result"
}
// SetSuccess sets the result for successful task execution
func (a *AsyncTaskResult) SetSuccess(result JSONMap) {
a.Result = result
a.ErrorCode = nil
a.ErrorMessage = nil
a.ErrorDetail = nil
}
// SetError sets the error information for failed task execution
func (a *AsyncTaskResult) SetError(code int, message string, detail JSONMap) {
a.Result = nil
a.ErrorCode = &code
a.ErrorMessage = &message
a.ErrorDetail = detail
}
// HasError checks if the task result contains an error
func (a *AsyncTaskResult) HasError() bool {
return a.ErrorCode != nil || a.ErrorMessage != nil
}
// GetErrorCode returns the error code or 0 if no error
func (a *AsyncTaskResult) GetErrorCode() int {
if a.ErrorCode == nil {
return 0
}
return *a.ErrorCode
}
// GetErrorMessage returns the error message or empty string if no error
func (a *AsyncTaskResult) GetErrorMessage() string {
if a.ErrorMessage == nil {
return ""
}
return *a.ErrorMessage
}
// IsSuccess checks if the task execution was successful
func (a *AsyncTaskResult) IsSuccess() bool {
return !a.HasError()
}
// Clear clears all result data
func (a *AsyncTaskResult) Clear() {
a.Result = nil
a.ErrorCode = nil
a.ErrorMessage = nil
a.ErrorDetail = nil
}