123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package dao
- import (
- "context"
- "database/sql"
- "time"
- "go-common/app/service/main/antispam/conf"
- "go-common/library/cache/redis"
- xsql "go-common/library/database/sql"
- )
- // Executer .
- type Executer interface {
- Exec(ctx context.Context, SQL string, args ...interface{}) (sql.Result, error)
- }
- // Querier .
- type Querier interface {
- QueryRow(ctx context.Context, SQL string, args ...interface{}) *xsql.Row
- Query(ctx context.Context, SQL string, args ...interface{}) (*xsql.Rows, error)
- }
- // KeywordDao .
- type KeywordDao interface {
- GetByID(context.Context, int64) (*Keyword, error)
- GetByIDs(context.Context, []int64) ([]*Keyword, error)
- GetByCond(context.Context, *Condition) ([]*Keyword, int64, error)
- GetByOffsetLimit(context.Context, *Condition) ([]*Keyword, error)
- GetByAreaAndContents(context.Context, *Condition) ([]*Keyword, error)
- GetByAreaAndContent(context.Context, *Condition) (*Keyword, error)
- GetRubbish(context.Context, *Condition) ([]*Keyword, error)
- Insert(context.Context, *Keyword) (*Keyword, error)
- Update(context.Context, *Keyword) (*Keyword, error)
- DeleteByIDs(context.Context, []int64) ([]*Keyword, error)
- }
- // RuleDao .
- type RuleDao interface {
- GetByID(context.Context, int64) (*Rule, error)
- GetByIDs(context.Context, []int64) ([]*Rule, error)
- GetByCond(context.Context, *Condition) ([]*Rule, int64, error)
- GetByArea(context.Context, *Condition) ([]*Rule, error)
- GetByAreaAndTypeAndScope(context.Context, *Condition) (*Rule, error)
- GetByAreaAndLimitType(context.Context, *Condition) ([]*Rule, error)
- Insert(context.Context, *Rule) (*Rule, error)
- Update(context.Context, *Rule) (*Rule, error)
- }
- // RegexpDao .
- type RegexpDao interface {
- GetByID(context.Context, int64) (*Regexp, error)
- GetByIDs(context.Context, []int64) ([]*Regexp, error)
- GetByCond(context.Context, *Condition) ([]*Regexp, int64, error)
- GetByAreaAndContent(context.Context, *Condition) (*Regexp, error)
- GetByContents(context.Context, []string) ([]*Regexp, error)
- Insert(context.Context, *Regexp) (*Regexp, error)
- Update(context.Context, *Regexp) (*Regexp, error)
- }
- // Tx .
- type Tx interface {
- Executer
- RegexpTx
- KeywordTx
- RuleTx
- Commit() error
- Rollback() error
- }
- // KeywordTx .
- type KeywordTx interface {
- InsertKeyword(*Keyword) error
- UpdateKeyword(*Keyword) error
- }
- // RegexpTx .
- type RegexpTx interface {
- InsertRegexp(*Regexp) error
- UpdateRegexp(*Regexp) error
- }
- // RuleTx .
- type RuleTx interface {
- InsertRule(*Rule) error
- UpdateRule(*Rule) error
- }
- // Dao .
- type Dao struct {
- // db *xsql.DB
- redis *redis.Pool
- redisExpire int
- }
- // New a dao and return.
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- // db
- // db: xsql.NewMySQL(c.MySQL.AntiSpam),
- // redis
- redis: redis.NewPool(c.Redis.Config),
- redisExpire: int(time.Duration(c.Redis.IndexExpire) / time.Second),
- }
- return
- }
- // Ping check connection used in dao
- func (d *Dao) Ping(c context.Context) (err error) {
- if err = d.pingRedis(c); err != nil {
- return
- }
- err = PingMySQL(c)
- return
- }
- // Close close all connection.
- func (d *Dao) Close() {
- if d.redis != nil {
- d.redis.Close()
- }
- Close()
- }
|