package model import ( "context" "errors" "fmt" "github.com/zeromicro/go-zero/core/stores/sqlx" "time" ) var _ NhEmailRewardModel = (*customNhEmailRewardModel)(nil) type ( // NhEmailRewardModel is an interface to be customized, add more methods here, // and implement the added methods in customNhEmailRewardModel. NhEmailRewardModel interface { nhEmailRewardModel withSession(session sqlx.Session) NhEmailRewardModel AllRequireSend(ctx context.Context) ([]NhEmailReward, error) SetSent(ctx context.Context, id, uid uint) error } customNhEmailRewardModel struct { *defaultNhEmailRewardModel } ) func (m *customNhEmailRewardModel) SetSent(ctx context.Context, id, uid uint) error { upate := fmt.Sprintf("update %s set `uid` = ?, `sent_at` = ? where `id` = ? and `sent_at` = 0", m.table) result, err := m.conn.ExecCtx(ctx, upate, uid, time.Now().Unix(), id) if err != nil { return err } rows, err := result.RowsAffected() if err != nil { return err } if rows == 0 { return ErrNoRowUpdate } return nil } func (m *customNhEmailRewardModel) AllRequireSend(ctx context.Context) ([]NhEmailReward, error) { query := fmt.Sprintf("select %s from %s where `sent_at` = 0", nhEmailRewardRows, m.table) var result []NhEmailReward err := m.conn.QueryRowsCtx(ctx, &result, query) if err != nil && !errors.Is(err, sqlx.ErrNotFound) { return nil, err } return result, nil } // NewNhEmailRewardModel returns a model for the database table. func NewNhEmailRewardModel(conn sqlx.SqlConn) NhEmailRewardModel { return &customNhEmailRewardModel{ defaultNhEmailRewardModel: newNhEmailRewardModel(conn), } } func (m *customNhEmailRewardModel) withSession(session sqlx.Session) NhEmailRewardModel { return NewNhEmailRewardModel(sqlx.NewSqlConnFromSession(session)) }