package users import ( "context" "database/sql" "backend/database/models/qvyun/public/model" "backend/database/models/qvyun/public/table" "backend/pkg/pg" . "github.com/go-jet/jet/v2/postgres" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) // @provider:except type Service struct { db *sql.DB log *logrus.Entry `inject:"false"` } func (svc *Service) Prepare() error { svc.log = logrus.WithField("module", "users.service") return nil } // GetByOpenID func (svc *Service) GetByOpenID(ctx context.Context, openid string) (*model.Users, error) { tbl := table.Users stmt := tbl. SELECT(tbl.AllColumns). WHERE( tbl.OpenID.EQ(String(openid)), ) svc.log.WithField("method", "GetByOpenID").Debug(stmt.DebugSql()) var item model.Users if err := stmt.QueryContext(ctx, svc.db, &item); err != nil { return nil, errors.Wrap(err, "failed to query user by openid") } return &item, nil } // GetOrNew func (svc *Service) GetOrNew(ctx context.Context, openid string, authInfo pg.UserOAuth) (*model.Users, error) { user, err := svc.GetByOpenID(ctx, openid) if err == nil { return user, nil } if err != nil { if errors.Is(err, sql.ErrNoRows) { // user = &model.Users{ // OpenID: openid, // OAuth:,authInfo // } // if err := user.Insert(ctx, svc.db, table.Users); err != nil { // return nil, errors.Wrap(err, "failed to insert user") // } } return nil, errors.Wrap(err, "failed to get user by openid") } return nil, errors.New("unknown error") }