68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
|
package model
|
||
|
|
||
|
import (
|
||
|
"blog/pkg/app"
|
||
|
"github.com/jinzhu/gorm"
|
||
|
)
|
||
|
|
||
|
type Tag struct {
|
||
|
*Model
|
||
|
Name string `json:"name"`
|
||
|
State uint8 `json:"state"`
|
||
|
}
|
||
|
|
||
|
func (t Tag) TableName() string {
|
||
|
return "blog_tag"
|
||
|
}
|
||
|
|
||
|
type TagSwagger struct {
|
||
|
List []*Tag
|
||
|
Pager *app.Pager
|
||
|
}
|
||
|
|
||
|
func (t Tag) Count(db *gorm.DB) (int, error) {
|
||
|
var count int
|
||
|
if t.Name != "" {
|
||
|
db = db.Where("name = ?", t.Name)
|
||
|
}
|
||
|
db = db.Where("state = ?", t.State)
|
||
|
if err := db.Model(&t).Where("is_del = ?", 0).Count(&count).Error; err != nil {
|
||
|
return 0, err
|
||
|
}
|
||
|
|
||
|
return count, nil
|
||
|
}
|
||
|
|
||
|
func (t Tag) List(db *gorm.DB, pageOffset, pageSize int) ([]*Tag, error) {
|
||
|
var tags []*Tag
|
||
|
var err error
|
||
|
if pageOffset >= 0 && pageSize > 0 {
|
||
|
db = db.Offset(pageOffset).Limit(pageSize)
|
||
|
}
|
||
|
if t.Name != "" {
|
||
|
db = db.Where("name = ?", t.Name)
|
||
|
}
|
||
|
db = db.Where("state = ?", t.State)
|
||
|
if err = db.Where("is_del = ?", 0).Find(&tags).Error; err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return tags, nil
|
||
|
}
|
||
|
|
||
|
func (t Tag) Create(db *gorm.DB) error {
|
||
|
return db.Create(&t).Error
|
||
|
}
|
||
|
|
||
|
func (t Tag) Update(db *gorm.DB, values interface{}) error {
|
||
|
if err := db.Model(t).Where("id = ? AND is_del = ?", t.ID, 0).Updates(values).Error; err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (t Tag) Delete(db *gorm.DB) error {
|
||
|
return db.Where("id = ? AND is_del = ?", t.Model.ID, 0).Delete(&t).Error
|
||
|
}
|