| 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 |
| } |
|
|