49 lines
1.5 KiB
Go
Executable File
49 lines
1.5 KiB
Go
Executable File
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))
|
|
}
|