feat: model and dao
This commit is contained in:
parent
539ee7fa86
commit
6aeb3f068d
|
|
@ -0,0 +1,87 @@
|
|||
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
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
package dao
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"twin-api/app/common/model"
|
||||
"twin-api/base/global"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type UserPkg struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewUserPkg() *UserPkg {
|
||||
return &UserPkg{
|
||||
db: global.GetDB(),
|
||||
}
|
||||
}
|
||||
|
||||
func (p *UserPkg) TableName() string {
|
||||
return "tw_user_package"
|
||||
}
|
||||
|
||||
func (p *UserPkg) Create(m *model.UserPkg) error {
|
||||
return p.db.Table(p.TableName()).Create(m).Error
|
||||
}
|
||||
|
||||
func (p *UserPkg) Update(m *model.UserPkg) error {
|
||||
return p.db.Table(p.TableName()).Save(m).Error
|
||||
}
|
||||
|
||||
func (p *UserPkg) Delete(m *model.UserPkg) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *UserPkg) Get(id, userId int64) (*model.UserPkg, error) {
|
||||
var res model.UserPkg
|
||||
if err := p.db.Table(p.TableName()).Where("id = ? AND user_id = ?", id, userId).First(&res).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
func (p *UserPkg) GetByUserId(userId int64) (*model.UserPkgInfo, error) {
|
||||
var res model.UserPkgInfo
|
||||
tx := p.db.Table(p.TableName() + " u ")
|
||||
tx = tx.Joins(fmt.Sprintf(" JOIN %s p ON u.id = p.user_id", NewPackage().TableName()))
|
||||
tx = tx.Where("u.user_id = ?", userId)
|
||||
tx = tx.Order("u.id desc")
|
||||
if err := tx.Select("u.*,p.*").First(&res).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
func (p *UserPkg) Query(...any) (any, error) {
|
||||
panic("implement me")
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package model
|
||||
|
||||
type Pkg struct {
|
||||
Id int64
|
||||
ExpireTime int64
|
||||
CreateTime int64
|
||||
UpdateTime int64
|
||||
Status int64
|
||||
Name string
|
||||
Version string
|
||||
Link string
|
||||
}
|
||||
|
||||
const (
|
||||
PkgNormal = 1
|
||||
PkgDelete = 2
|
||||
)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package model
|
||||
|
||||
type UserPkg struct {
|
||||
Id int64
|
||||
UserId int64
|
||||
PackageId int64
|
||||
CreateTime int64
|
||||
UpdateTime int64
|
||||
Extra string
|
||||
}
|
||||
|
||||
type UserPkgInfo struct {
|
||||
UserPkg
|
||||
Pkg
|
||||
}
|
||||
Loading…
Reference in New Issue