feat(sync): full code sync from release
This commit is contained in:
63
backend/internal/service/sora_generation.go
Normal file
63
backend/internal/service/sora_generation.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
)
|
||||
|
||||
// SoraGeneration 代表一条 Sora 客户端生成记录。
|
||||
type SoraGeneration struct {
|
||||
ID int64 `json:"id"`
|
||||
UserID int64 `json:"user_id"`
|
||||
APIKeyID *int64 `json:"api_key_id,omitempty"`
|
||||
Model string `json:"model"`
|
||||
Prompt string `json:"prompt"`
|
||||
MediaType string `json:"media_type"` // video / image
|
||||
Status string `json:"status"` // pending / generating / completed / failed / cancelled
|
||||
MediaURL string `json:"media_url"` // 主媒体 URL(预签名或 CDN)
|
||||
MediaURLs []string `json:"media_urls"` // 多图时的 URL 数组
|
||||
FileSizeBytes int64 `json:"file_size_bytes"`
|
||||
StorageType string `json:"storage_type"` // s3 / local / upstream / none
|
||||
S3ObjectKeys []string `json:"s3_object_keys"` // S3 object key 数组
|
||||
UpstreamTaskID string `json:"upstream_task_id"`
|
||||
ErrorMessage string `json:"error_message"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
CompletedAt *time.Time `json:"completed_at,omitempty"`
|
||||
}
|
||||
|
||||
// Sora 生成记录状态常量
|
||||
const (
|
||||
SoraGenStatusPending = "pending"
|
||||
SoraGenStatusGenerating = "generating"
|
||||
SoraGenStatusCompleted = "completed"
|
||||
SoraGenStatusFailed = "failed"
|
||||
SoraGenStatusCancelled = "cancelled"
|
||||
)
|
||||
|
||||
// Sora 存储类型常量
|
||||
const (
|
||||
SoraStorageTypeS3 = "s3"
|
||||
SoraStorageTypeLocal = "local"
|
||||
SoraStorageTypeUpstream = "upstream"
|
||||
SoraStorageTypeNone = "none"
|
||||
)
|
||||
|
||||
// SoraGenerationListParams 查询生成记录的参数。
|
||||
type SoraGenerationListParams struct {
|
||||
UserID int64
|
||||
Status string // 可选筛选
|
||||
StorageType string // 可选筛选
|
||||
MediaType string // 可选筛选
|
||||
Page int
|
||||
PageSize int
|
||||
}
|
||||
|
||||
// SoraGenerationRepository 生成记录持久化接口。
|
||||
type SoraGenerationRepository interface {
|
||||
Create(ctx context.Context, gen *SoraGeneration) error
|
||||
GetByID(ctx context.Context, id int64) (*SoraGeneration, error)
|
||||
Update(ctx context.Context, gen *SoraGeneration) error
|
||||
Delete(ctx context.Context, id int64) error
|
||||
List(ctx context.Context, params SoraGenerationListParams) ([]*SoraGeneration, int64, error)
|
||||
CountByUserAndStatus(ctx context.Context, userID int64, statuses []string) (int64, error)
|
||||
}
|
||||
Reference in New Issue
Block a user