Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
76 lines
1.9 KiB
Go
76 lines
1.9 KiB
Go
package application
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"github.com/perfect-panel/server/internal/model/client"
|
|
"github.com/perfect-panel/server/internal/svc"
|
|
"github.com/perfect-panel/server/internal/types"
|
|
"github.com/perfect-panel/server/pkg/logger"
|
|
"github.com/perfect-panel/server/pkg/xerr"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type GetAppVersionListLogic struct {
|
|
logger.Logger
|
|
ctx context.Context
|
|
svcCtx *svc.ServiceContext
|
|
}
|
|
|
|
func NewGetAppVersionListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetAppVersionListLogic {
|
|
return &GetAppVersionListLogic{
|
|
Logger: logger.WithContext(ctx),
|
|
ctx: ctx,
|
|
svcCtx: svcCtx,
|
|
}
|
|
}
|
|
|
|
func (l *GetAppVersionListLogic) GetAppVersionList(req *types.GetAppVersionListRequest) (resp *types.GetAppVersionListResponse, err error) {
|
|
var versions []*client.ApplicationVersion
|
|
var total int64
|
|
|
|
db := l.svcCtx.DB.Model(&client.ApplicationVersion{})
|
|
|
|
if req.Platform != "" {
|
|
db = db.Where("platform = ?", req.Platform)
|
|
}
|
|
|
|
err = db.Count(&total).Error
|
|
if err != nil {
|
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "get version list count error: %v", err)
|
|
}
|
|
|
|
offset := (req.Page - 1) * req.Size
|
|
if offset < 0 {
|
|
offset = 0
|
|
}
|
|
err = db.Offset(offset).Limit(req.Size).Order("id desc").Find(&versions).Error
|
|
if err != nil {
|
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "get version list error: %v", err)
|
|
}
|
|
|
|
var list []*types.ApplicationVersion
|
|
for _, v := range versions {
|
|
desc := make(map[string]string)
|
|
_ = json.Unmarshal(v.Description, &desc)
|
|
list = append(list, &types.ApplicationVersion{
|
|
Id: v.Id,
|
|
Platform: v.Platform,
|
|
Version: v.Version,
|
|
MinVersion: v.MinVersion,
|
|
ForceUpdate: v.ForceUpdate,
|
|
Description: desc,
|
|
Url: v.Url,
|
|
IsDefault: v.IsDefault,
|
|
IsInReview: v.IsInReview,
|
|
CreatedAt: v.CreatedAt.Unix(),
|
|
})
|
|
}
|
|
|
|
return &types.GetAppVersionListResponse{
|
|
Total: total,
|
|
List: list,
|
|
}, nil
|
|
}
|