From 3f89b36d8cf0a8e3185cdf7c6fa37a78729b5b95 Mon Sep 17 00:00:00 2001 From: wangfuduo Date: Tue, 7 Jul 2026 16:38:04 +0800 Subject: [PATCH] fix: pkg model and dao --- app/common/dao/pkg.go | 44 +++++++++++++++++++++++++++++++++++++++++ app/common/model/pkg.go | 16 +++++++-------- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/app/common/dao/pkg.go b/app/common/dao/pkg.go index 75ef8ad..fabd024 100644 --- a/app/common/dao/pkg.go +++ b/app/common/dao/pkg.go @@ -2,6 +2,7 @@ package dao import ( "errors" + "fmt" "twin-api/app/common/model" "twin-api/base/global" @@ -62,6 +63,44 @@ func (p *Pkg) GetByPkgName(name string) (*model.Pkg, error) { 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) { var res []*model.Pkg 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 { 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 { return nil, 0, err diff --git a/app/common/model/pkg.go b/app/common/model/pkg.go index e0a21aa..7295e46 100644 --- a/app/common/model/pkg.go +++ b/app/common/model/pkg.go @@ -1,14 +1,14 @@ package model type Pkg struct { - Id int64 - ExpireTime int64 - CreateTime int64 - UpdateTime int64 - Status int64 - Name string - Version string - Link string + Id int64 `json:"id"` + ExpireTime int64 `json:"expire_time"` + CreateTime int64 `json:"create_time"` + UpdateTime int64 `json:"update_time"` + Status int64 `json:"status"` + Name string `json:"name"` + Version string `json:"version"` + Link string `json:"link"` } const (