package model import ( "context" "errors" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/stores/sqlx" ) var _ NhTaskAmbassadorModel = (*customNhTaskAmbassadorModel)(nil) type ( // NhTaskAmbassadorModel is an interface to be customized, add more methods here, // and implement the added methods in customNhTaskAmbassadorModel. NhTaskAmbassadorModel interface { nhTaskAmbassadorModel withSession(session sqlx.Session) NhTaskAmbassadorModel IsAmbassador(ctx context.Context, uid uint) bool } customNhTaskAmbassadorModel struct { *defaultNhTaskAmbassadorModel } ) func (m *customNhTaskAmbassadorModel) IsAmbassador(ctx context.Context, uid uint) bool { query := "select t.id from nh_task_ambassador t join nh_user u on t.email = u.email where u.id = ? limit 1" var id uint err := m.conn.QueryRowCtx(ctx, &id, query, uid) if err != nil { if !errors.Is(err, sqlx.ErrNotFound) { logx.Errorw("IsAmbassador query failed", logx.Field("query", query), logx.Field("args", uid), logx.Field("err", err)) } return false } return id > 0 } // NewNhTaskAmbassadorModel returns a model for the database table. func NewNhTaskAmbassadorModel(conn sqlx.SqlConn) NhTaskAmbassadorModel { return &customNhTaskAmbassadorModel{ defaultNhTaskAmbassadorModel: newNhTaskAmbassadorModel(conn), } } func (m *customNhTaskAmbassadorModel) withSession(session sqlx.Session) NhTaskAmbassadorModel { return NewNhTaskAmbassadorModel(sqlx.NewSqlConnFromSession(session)) }