package models
|
|
type Cache struct {
|
Id uint `gorm:"column:id;primary_key;auto_increment;unique;not null;"`
|
Type string `gorm:"column:type;"` // 消息类型 1400, basic
|
Data string `gorm:"column:data;type:text"`
|
CreateTime int64 `gorm:"column:create_time;"`
|
Retry int `gorm:"column:retry;"`
|
}
|
|
func (c *Cache) TableName() string {
|
return "caches"
|
}
|
|
func (c *Cache) First() error {
|
return db.Table(c.TableName()).First(c).Error
|
}
|
|
func (c *Cache) FindAll() ([]Cache, error) {
|
var caches []Cache
|
if err := db.Table(c.TableName()).Find(&caches).Error; err != nil {
|
return nil, err
|
}
|
|
return caches, nil
|
}
|
|
func (c *Cache) Count() (int64, error) {
|
var total int64
|
if err := db.Table(c.TableName()).Count(&total).Error; err != nil {
|
return total, err
|
}
|
|
return total, nil
|
}
|
|
func (c *Cache) Save() error {
|
return db.Table(c.TableName()).Save(c).Error
|
}
|
|
func (c *Cache) UpdateRetryCount() error {
|
return db.Table(c.TableName()).Where("id = ?", c.Id).Update("retry", c.Retry+1).Error
|
}
|
|
func (c *Cache) Delete() error {
|
return db.Table(c.TableName()).Where("id = ?", c.Id).Delete(c).Error
|
}
|
|
func (c *Cache) Clean() error {
|
sql := "DELETE FROM caches WHERE id NOT IN (SELECT id FROM caches ORDER BY id DESC LIMIT 15000);"
|
return db.Table(c.TableName()).Exec(sql).Error
|
}
|