88 lines
1.7 KiB
Go
88 lines
1.7 KiB
Go
package dao
|
|
|
|
import (
|
|
"errors"
|
|
"twin-api/app/common/model"
|
|
"twin-api/base/global"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Pkg struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewPackage() *Pkg {
|
|
return &Pkg{
|
|
db: global.GetDB(),
|
|
}
|
|
}
|
|
|
|
func (p *Pkg) TableName() string {
|
|
return "tw_package"
|
|
}
|
|
|
|
func (p *Pkg) Create(m *model.Pkg) error {
|
|
return p.db.Table(p.TableName()).Create(m).Error
|
|
}
|
|
|
|
func (p *Pkg) Update(m *model.Pkg) error {
|
|
return p.db.Table(p.TableName()).Save(m).Error
|
|
}
|
|
|
|
func (p *Pkg) Delete(m *model.Pkg) error {
|
|
return p.db.Table(p.TableName()).Where("id = ?", m.Id).Update("status", model.PkgDelete).Error
|
|
}
|
|
|
|
func (p *Pkg) Get(id int64) (*model.Pkg, error) {
|
|
var res model.Pkg
|
|
if err := p.db.Table(p.TableName()).Where("id = ?", id).First(&res).Error; err != nil {
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
return &res, nil
|
|
}
|
|
|
|
func (p *Pkg) GetByPkgName(name string) (*model.Pkg, error) {
|
|
var res model.Pkg
|
|
tx := p.db.Table(p.TableName())
|
|
if name != "" {
|
|
tx = tx.Where("name = ?", name)
|
|
}
|
|
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) Query(pkgName, version string, status, page, size int, sort string) ([]*model.Pkg, int64, error) {
|
|
var res []*model.Pkg
|
|
var count int64
|
|
tx := p.db.Table(p.TableName())
|
|
if pkgName != "" {
|
|
tx = tx.Where("name = ?", pkgName)
|
|
}
|
|
if version != "" {
|
|
tx = tx.Where("version = ?", version)
|
|
}
|
|
if status != 0 {
|
|
tx = tx.Where("status = ?", status)
|
|
}
|
|
if err := tx.Count(&count).Error; err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
if err := tx.Limit(size).Offset((page - 1) * size).Find(&res).Error; err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
return res, count, nil
|
|
}
|