fix: pkg model and dao

This commit is contained in:
wangfuduo 2026-07-07 16:38:04 +08:00
parent aa618d5919
commit 3f89b36d8c
2 changed files with 52 additions and 8 deletions

View File

@ -2,6 +2,7 @@ package dao
import ( import (
"errors" "errors"
"fmt"
"twin-api/app/common/model" "twin-api/app/common/model"
"twin-api/base/global" "twin-api/base/global"
@ -62,6 +63,44 @@ func (p *Pkg) GetByPkgName(name string) (*model.Pkg, error) {
return &res, nil return &res, nil
} }
func (p *Pkg) GetOne(name, version string) (*model.Pkg, error) {
var res model.Pkg
tx := p.db.Table(p.TableName())
if name != "" {
tx = tx.Where("name = ? AND version = ?", name, version)
}
tx.Order("id desc")
if err := tx.First(&res).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, err
}
return &res, nil
}
func (p *Pkg) GetUserPkg(userId int64, pkg, version string) (*model.Pkg, error) {
var res model.Pkg
tx := p.db.Table(p.TableName() + " p ")
tx = tx.Joins(fmt.Sprintf(" JOIN %s u ON u.package_id = p.id", NewUserPkg().TableName()))
tx = tx.Where("u.user_id = ?", userId)
tx = tx.Where("p.name = ? ", pkg)
tx = tx.Where("p.version = ?", version)
if err := tx.Select("u.*,p.*").Find(&res).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, err
}
if res.Id == 0 {
return nil, nil
}
return &res, nil
}
func (p *Pkg) Query(pkgName, version string, status, page, size int, sort string) ([]*model.Pkg, int64, error) { func (p *Pkg) Query(pkgName, version string, status, page, size int, sort string) ([]*model.Pkg, int64, error) {
var res []*model.Pkg var res []*model.Pkg
var count int64 var count int64
@ -78,6 +117,11 @@ func (p *Pkg) Query(pkgName, version string, status, page, size int, sort string
if err := tx.Count(&count).Error; err != nil { if err := tx.Count(&count).Error; err != nil {
return nil, 0, err return nil, 0, err
} }
if sort != "" {
tx = tx.Order(sort)
} else {
tx = tx.Order("id desc")
}
if err := tx.Limit(size).Offset((page - 1) * size).Find(&res).Error; err != nil { if err := tx.Limit(size).Offset((page - 1) * size).Find(&res).Error; err != nil {
return nil, 0, err return nil, 0, err

View File

@ -1,14 +1,14 @@
package model package model
type Pkg struct { type Pkg struct {
Id int64 Id int64 `json:"id"`
ExpireTime int64 ExpireTime int64 `json:"expire_time"`
CreateTime int64 CreateTime int64 `json:"create_time"`
UpdateTime int64 UpdateTime int64 `json:"update_time"`
Status int64 Status int64 `json:"status"`
Name string Name string `json:"name"`
Version string Version string `json:"version"`
Link string Link string `json:"link"`
} }
const ( const (