| | package model |
| |
|
| | type Midjourney struct { |
| | Id int `json:"id"` |
| | Code int `json:"code"` |
| | UserId int `json:"user_id" gorm:"index"` |
| | Action string `json:"action" gorm:"type:varchar(40);index"` |
| | MjId string `json:"mj_id" gorm:"index"` |
| | Prompt string `json:"prompt"` |
| | PromptEn string `json:"prompt_en"` |
| | Description string `json:"description"` |
| | State string `json:"state"` |
| | SubmitTime int64 `json:"submit_time" gorm:"index"` |
| | StartTime int64 `json:"start_time" gorm:"index"` |
| | FinishTime int64 `json:"finish_time" gorm:"index"` |
| | ImageUrl string `json:"image_url"` |
| | VideoUrl string `json:"video_url"` |
| | VideoUrls string `json:"video_urls"` |
| | Status string `json:"status" gorm:"type:varchar(20);index"` |
| | Progress string `json:"progress" gorm:"type:varchar(30);index"` |
| | FailReason string `json:"fail_reason"` |
| | ChannelId int `json:"channel_id"` |
| | Quota int `json:"quota"` |
| | Buttons string `json:"buttons"` |
| | Properties string `json:"properties"` |
| | } |
| |
|
| | |
| | type TaskQueryParams struct { |
| | ChannelID string |
| | MjID string |
| | StartTimestamp string |
| | EndTimestamp string |
| | } |
| |
|
| | func GetAllUserTask(userId int, startIdx int, num int, queryParams TaskQueryParams) []*Midjourney { |
| | var tasks []*Midjourney |
| | var err error |
| |
|
| | |
| | query := DB.Where("user_id = ?", userId) |
| |
|
| | if queryParams.MjID != "" { |
| | query = query.Where("mj_id = ?", queryParams.MjID) |
| | } |
| | if queryParams.StartTimestamp != "" { |
| | |
| | query = query.Where("submit_time >= ?", queryParams.StartTimestamp) |
| | } |
| | if queryParams.EndTimestamp != "" { |
| | query = query.Where("submit_time <= ?", queryParams.EndTimestamp) |
| | } |
| |
|
| | |
| | err = query.Order("id desc").Limit(num).Offset(startIdx).Find(&tasks).Error |
| | if err != nil { |
| | return nil |
| | } |
| |
|
| | return tasks |
| | } |
| |
|
| | func GetAllTasks(startIdx int, num int, queryParams TaskQueryParams) []*Midjourney { |
| | var tasks []*Midjourney |
| | var err error |
| |
|
| | |
| | query := DB |
| |
|
| | |
| | if queryParams.ChannelID != "" { |
| | query = query.Where("channel_id = ?", queryParams.ChannelID) |
| | } |
| | if queryParams.MjID != "" { |
| | query = query.Where("mj_id = ?", queryParams.MjID) |
| | } |
| | if queryParams.StartTimestamp != "" { |
| | query = query.Where("submit_time >= ?", queryParams.StartTimestamp) |
| | } |
| | if queryParams.EndTimestamp != "" { |
| | query = query.Where("submit_time <= ?", queryParams.EndTimestamp) |
| | } |
| |
|
| | |
| | err = query.Order("id desc").Limit(num).Offset(startIdx).Find(&tasks).Error |
| | if err != nil { |
| | return nil |
| | } |
| |
|
| | return tasks |
| | } |
| |
|
| | func GetAllUnFinishTasks() []*Midjourney { |
| | var tasks []*Midjourney |
| | var err error |
| | |
| | err = DB.Where("progress != ?", "100%").Find(&tasks).Error |
| | if err != nil { |
| | return nil |
| | } |
| | return tasks |
| | } |
| |
|
| | func GetByOnlyMJId(mjId string) *Midjourney { |
| | var mj *Midjourney |
| | var err error |
| | err = DB.Where("mj_id = ?", mjId).First(&mj).Error |
| | if err != nil { |
| | return nil |
| | } |
| | return mj |
| | } |
| |
|
| | func GetByMJId(userId int, mjId string) *Midjourney { |
| | var mj *Midjourney |
| | var err error |
| | err = DB.Where("user_id = ? and mj_id = ?", userId, mjId).First(&mj).Error |
| | if err != nil { |
| | return nil |
| | } |
| | return mj |
| | } |
| |
|
| | func GetByMJIds(userId int, mjIds []string) []*Midjourney { |
| | var mj []*Midjourney |
| | var err error |
| | err = DB.Where("user_id = ? and mj_id in (?)", userId, mjIds).Find(&mj).Error |
| | if err != nil { |
| | return nil |
| | } |
| | return mj |
| | } |
| |
|
| | func GetMjByuId(id int) *Midjourney { |
| | var mj *Midjourney |
| | var err error |
| | err = DB.Where("id = ?", id).First(&mj).Error |
| | if err != nil { |
| | return nil |
| | } |
| | return mj |
| | } |
| |
|
| | func UpdateProgress(id int, progress string) error { |
| | return DB.Model(&Midjourney{}).Where("id = ?", id).Update("progress", progress).Error |
| | } |
| |
|
| | func (midjourney *Midjourney) Insert() error { |
| | var err error |
| | err = DB.Create(midjourney).Error |
| | return err |
| | } |
| |
|
| | func (midjourney *Midjourney) Update() error { |
| | var err error |
| | err = DB.Save(midjourney).Error |
| | return err |
| | } |
| |
|
| | func MjBulkUpdate(mjIds []string, params map[string]any) error { |
| | return DB.Model(&Midjourney{}). |
| | Where("mj_id in (?)", mjIds). |
| | Updates(params).Error |
| | } |
| |
|
| | func MjBulkUpdateByTaskIds(taskIDs []int, params map[string]any) error { |
| | return DB.Model(&Midjourney{}). |
| | Where("id in (?)", taskIDs). |
| | Updates(params).Error |
| | } |
| |
|
| | |
| | func CountAllTasks(queryParams TaskQueryParams) int64 { |
| | var total int64 |
| | query := DB.Model(&Midjourney{}) |
| | if queryParams.ChannelID != "" { |
| | query = query.Where("channel_id = ?", queryParams.ChannelID) |
| | } |
| | if queryParams.MjID != "" { |
| | query = query.Where("mj_id = ?", queryParams.MjID) |
| | } |
| | if queryParams.StartTimestamp != "" { |
| | query = query.Where("submit_time >= ?", queryParams.StartTimestamp) |
| | } |
| | if queryParams.EndTimestamp != "" { |
| | query = query.Where("submit_time <= ?", queryParams.EndTimestamp) |
| | } |
| | _ = query.Count(&total).Error |
| | return total |
| | } |
| |
|
| | |
| | func CountAllUserTask(userId int, queryParams TaskQueryParams) int64 { |
| | var total int64 |
| | query := DB.Model(&Midjourney{}).Where("user_id = ?", userId) |
| | if queryParams.MjID != "" { |
| | query = query.Where("mj_id = ?", queryParams.MjID) |
| | } |
| | if queryParams.StartTimestamp != "" { |
| | query = query.Where("submit_time >= ?", queryParams.StartTimestamp) |
| | } |
| | if queryParams.EndTimestamp != "" { |
| | query = query.Where("submit_time <= ?", queryParams.EndTimestamp) |
| | } |
| | _ = query.Count(&total).Error |
| | return total |
| | } |
| |
|