200 lines
6.0 KiB
Go
200 lines
6.0 KiB
Go
|
package mysql
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"finclip-app-manager/domain/entity"
|
||
|
"finclip-app-manager/domain/repository"
|
||
|
"finclip-app-manager/infrastructure/db/entity/sql"
|
||
|
"gorm.io/gorm"
|
||
|
)
|
||
|
|
||
|
var _ repository.IAppBuildInfoRepo = new(AppBuildInfoMysqlRepo)
|
||
|
|
||
|
type AppBuildInfoMysqlRepo struct {
|
||
|
}
|
||
|
|
||
|
func NewAppBuildInfoMysqlRepo() *AppBuildInfoMysqlRepo {
|
||
|
return &AppBuildInfoMysqlRepo{}
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) Insert(ctx context.Context, item entity.AppBuildInfo) error {
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).Create(tr.CovertBuildInfoToSql(&item)).Error
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetInfoById(ctx context.Context, id string) (*entity.AppBuildInfo, error) {
|
||
|
query := "trace_id=?"
|
||
|
args := []interface{}{id}
|
||
|
info := sql.AppBuildInfo{}
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).
|
||
|
Where(query, args...).
|
||
|
First(&info).Error
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return tr.CovertBuildInfoToEntity(&info), err
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetInfoByBuildInfoId(ctx context.Context, buildInfoId string) (*entity.AppBuildInfo, error) {
|
||
|
query := "build_info_id=?"
|
||
|
args := []interface{}{buildInfoId}
|
||
|
info := sql.AppBuildInfo{}
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).
|
||
|
Where(query, args...).
|
||
|
First(&info).Error
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return tr.CovertBuildInfoToEntity(&info), err
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetInfoByBuildId(ctx context.Context, id string) (*entity.AppBuildInfo, error) {
|
||
|
query := "build_info_id=?"
|
||
|
args := []interface{}{id}
|
||
|
info := sql.AppBuildInfo{}
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).
|
||
|
Where(query, args...).
|
||
|
First(&info).Error
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return tr.CovertBuildInfoToEntity(&info), err
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetLatestInfoByAppId(ctx context.Context, appId string) (*entity.AppBuildInfo, error) {
|
||
|
query := "app_id=?"
|
||
|
args := []interface{}{appId}
|
||
|
info := sql.AppBuildInfo{}
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).
|
||
|
Where(query, args...).
|
||
|
Order("create_time DESC").
|
||
|
First(&info).Error
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return tr.CovertBuildInfoToEntity(&info), nil
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetTrialInfoByAppId(ctx context.Context, appId string) (*entity.AppBuildInfo, error) {
|
||
|
query := "app_id=? and source=?"
|
||
|
args := []interface{}{appId, entity.APP_BUILD_SOURCE_TRIAL}
|
||
|
info := sql.AppBuildInfo{}
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).Where(query, args...).First(&info).Error
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return tr.CovertBuildInfoToEntity(&info), nil
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetTrialInfoById(ctx context.Context, id string) (*entity.AppBuildInfo, error) {
|
||
|
query := "trace_id=? and source=?"
|
||
|
args := []interface{}{id, entity.APP_BUILD_SOURCE_TRIAL}
|
||
|
info := sql.AppBuildInfo{}
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).
|
||
|
Where(query, args...).First(&info).Error
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return tr.CovertBuildInfoToEntity(&info), nil
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) AddTrial(ctx context.Context, id string) error {
|
||
|
query := "trace_id=?"
|
||
|
args := []interface{}{id}
|
||
|
return DB.Model(&sql.AppBuildInfo{}).Where(query, args...).Update("source", entity.APP_BUILD_SOURCE_TRIAL).Error
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) CancelTrial(ctx context.Context, id string) error {
|
||
|
query := "trace_id=?"
|
||
|
args := []interface{}{id}
|
||
|
data := make(map[string]interface{})
|
||
|
data["source"] = entity.APP_BUILD_SOURCE_BUILD //零值字段
|
||
|
data["path_and_query"] = ""
|
||
|
return DB.Model(&sql.AppBuildInfo{}).Where(query, args...).Updates(data).Error
|
||
|
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) UpdateTrialStartParams(ctx context.Context, id string, params entity.AppStartParams) error {
|
||
|
query := "trace_id=?"
|
||
|
args := []interface{}{id}
|
||
|
return DB.Model(&sql.AppBuildInfo{}).Where(query, args...).Update("path_and_query", params.PathAndQuery).Error
|
||
|
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) UpdateTrialPath(ctx context.Context, id, path string) error {
|
||
|
query := "trace_id=?"
|
||
|
args := []interface{}{id}
|
||
|
return DB.Model(&sql.AppBuildInfo{}).Where(query, args...).Update("path", path).Error
|
||
|
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) UpdateOneStatus(ctx context.Context, id string, status bool) error {
|
||
|
query := "trace_id=?"
|
||
|
args := []interface{}{id}
|
||
|
return DB.Model(&sql.AppBuildInfo{}).Where(query, args...).Update("status", status).Error
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetList(ctx context.Context, appId string, pageNo, pageSize int) (int64, []entity.AppBuildInfo, error) {
|
||
|
query := "app_id =? "
|
||
|
args := []interface{}{appId}
|
||
|
sort := "create_time DESC"
|
||
|
var total int64
|
||
|
|
||
|
list := make([]sql.AppBuildInfo, 0)
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).Debug().
|
||
|
Where(query, args...).Count(&total).
|
||
|
Order(sort).
|
||
|
Offset(genOffset(pageNo, pageSize)).Limit(pageSize).
|
||
|
Find(&list).Error
|
||
|
if err != nil {
|
||
|
return 0, nil, err
|
||
|
}
|
||
|
result := make([]entity.AppBuildInfo, 0)
|
||
|
for _, v := range list {
|
||
|
temp := v
|
||
|
result = append(result, *tr.CovertBuildInfoToEntity(&temp))
|
||
|
}
|
||
|
return total, result, nil
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetAll(ctx context.Context) ([]entity.AppBuildInfo, error) {
|
||
|
list := make([]sql.AppBuildInfo, 0)
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).Debug().
|
||
|
Find(&list).Error
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
result := make([]entity.AppBuildInfo, 0)
|
||
|
for _, v := range list {
|
||
|
temp := v
|
||
|
result = append(result, *tr.CovertBuildInfoToEntity(&temp))
|
||
|
}
|
||
|
return result, nil
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) GetAppBuilds(ctx context.Context, groupID, appId string, pageSize, pageNo int) (int64, []entity.AppBuildInfo, error) {
|
||
|
query := "app_id =? and group_id =?"
|
||
|
args := []interface{}{appId, groupID}
|
||
|
sort := "create_time desc"
|
||
|
var total int64
|
||
|
list := make([]sql.AppBuildInfo, 0)
|
||
|
err := DB.Model(&sql.AppBuildInfo{}).Debug().
|
||
|
Where(query, args...).Count(&total).
|
||
|
Order(sort).
|
||
|
Offset(genOffset(pageNo, pageSize)).Limit(pageSize).
|
||
|
Find(&list).Error
|
||
|
if err != nil {
|
||
|
return 0, nil, err
|
||
|
}
|
||
|
result := make([]entity.AppBuildInfo, 0)
|
||
|
for _, v := range list {
|
||
|
temp := v
|
||
|
result = append(result, *tr.CovertBuildInfoToEntity(&temp))
|
||
|
}
|
||
|
return total, result, nil
|
||
|
}
|
||
|
|
||
|
func (a *AppBuildInfoMysqlRepo) NotFound(err error) bool {
|
||
|
return err == gorm.ErrRecordNotFound
|
||
|
}
|