zhangqian
2023-08-29 e668092cf0bca471e665580c255c04a6ffc3cb8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package utils
 
import (
    "errors"
    "fmt"
    "time"
 
    "gorm.io/gorm"
)
 
//@author: [songzhibin97](https://github.com/songzhibin97)
//@function: ClearTable
//@description: 清理数据库表数据
//@param: db(数据库对象) *gorm.DB, tableName(表名) string, compareField(比较字段) string, interval(间隔) string
//@return: error
 
func ClearTable(db *gorm.DB, tableName string, compareField string, interval string) error {
    if db == nil {
        return errors.New("db Cannot be empty")
    }
    duration, err := time.ParseDuration(interval)
    if err != nil {
        return err
    }
    if duration < 0 {
        return errors.New("parse duration < 0")
    }
    return db.Debug().Exec(fmt.Sprintf("DELETE FROM %s WHERE %s < ?", tableName, compareField), time.Now().Add(-duration)).Error
}