| | package model |
| |
|
| | import ( |
| | "github.com/QuantumNous/new-api/common" |
| |
|
| | "gorm.io/gorm" |
| | ) |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | type Vendor struct { |
| | Id int `json:"id"` |
| | Name string `json:"name" gorm:"size:128;not null;uniqueIndex:uk_vendor_name_delete_at,priority:1"` |
| | Description string `json:"description,omitempty" gorm:"type:text"` |
| | Icon string `json:"icon,omitempty" gorm:"type:varchar(128)"` |
| | Status int `json:"status" gorm:"default:1"` |
| | CreatedTime int64 `json:"created_time" gorm:"bigint"` |
| | UpdatedTime int64 `json:"updated_time" gorm:"bigint"` |
| | DeletedAt gorm.DeletedAt `json:"-" gorm:"index;uniqueIndex:uk_vendor_name_delete_at,priority:2"` |
| | } |
| |
|
| | |
| | func (v *Vendor) Insert() error { |
| | now := common.GetTimestamp() |
| | v.CreatedTime = now |
| | v.UpdatedTime = now |
| | return DB.Create(v).Error |
| | } |
| |
|
| | |
| | func IsVendorNameDuplicated(id int, name string) (bool, error) { |
| | if name == "" { |
| | return false, nil |
| | } |
| | var cnt int64 |
| | err := DB.Model(&Vendor{}).Where("name = ? AND id <> ?", name, id).Count(&cnt).Error |
| | return cnt > 0, err |
| | } |
| |
|
| | |
| | func (v *Vendor) Update() error { |
| | v.UpdatedTime = common.GetTimestamp() |
| | return DB.Save(v).Error |
| | } |
| |
|
| | |
| | func (v *Vendor) Delete() error { |
| | return DB.Delete(v).Error |
| | } |
| |
|
| | |
| | func GetVendorByID(id int) (*Vendor, error) { |
| | var v Vendor |
| | err := DB.First(&v, id).Error |
| | if err != nil { |
| | return nil, err |
| | } |
| | return &v, nil |
| | } |
| |
|
| | |
| | func GetAllVendors(offset int, limit int) ([]*Vendor, error) { |
| | var vendors []*Vendor |
| | err := DB.Offset(offset).Limit(limit).Find(&vendors).Error |
| | return vendors, err |
| | } |
| |
|
| | |
| | func SearchVendors(keyword string, offset int, limit int) ([]*Vendor, int64, error) { |
| | db := DB.Model(&Vendor{}) |
| | if keyword != "" { |
| | like := "%" + keyword + "%" |
| | db = db.Where("name LIKE ? OR description LIKE ?", like, like) |
| | } |
| | var total int64 |
| | if err := db.Count(&total).Error; err != nil { |
| | return nil, 0, err |
| | } |
| | var vendors []*Vendor |
| | if err := db.Offset(offset).Limit(limit).Order("id DESC").Find(&vendors).Error; err != nil { |
| | return nil, 0, err |
| | } |
| | return vendors, total, nil |
| | } |
| |
|