sqlx: user logic is implemented complete. WIP %45

r/paopao-ce-plus
Michael Li 2 years ago
parent 5957eeacc3
commit 250fd0af15
No known key found for this signature in database

@ -5,6 +5,9 @@
package sakila
import (
"strings"
"time"
"github.com/jmoiron/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
@ -21,48 +24,50 @@ type userManageSrv struct {
q *cc.UserManage
}
func (s *userManageSrv) GetUserByID(id int64) (*ms.User, error) {
res := &ms.User{}
err := s.q.GetUserById.Get(res, id)
return res, err
func (s *userManageSrv) GetUserByID(id int64) (res *ms.User, err error) {
err = s.q.GetUserById.Get(res, id)
return
}
func (s *userManageSrv) GetUserByUsername(username string) (*ms.User, error) {
res := &ms.User{}
err := s.q.GetUserByUsername.Get(res, username)
return res, err
func (s *userManageSrv) GetUserByUsername(username string) (res *ms.User, err error) {
err = s.q.GetUserByUsername.Get(res, username)
return
}
func (s *userManageSrv) GetUserByPhone(phone string) (*ms.User, error) {
res := &ms.User{}
err := s.q.GetUserByPhone.Get(res, phone)
return res, err
func (s *userManageSrv) GetUserByPhone(phone string) (res *ms.User, err error) {
err = s.q.GetUserByPhone.Get(res, phone)
return
}
func (s *userManageSrv) GetUsersByIDs(ids []int64) ([]*ms.User, error) {
res := []*ms.User{}
err := s.inSelect(&res, s.q.GetUsersByIds, ids)
return res, err
func (s *userManageSrv) GetUsersByIDs(ids []int64) (res []*ms.User, err error) {
err = s.inSelect(&res, s.q.GetUsersByIds, ids)
return
}
func (s *userManageSrv) GetUsersByKeyword(keyword string) ([]*ms.User, error) {
res := []*ms.User{}
err := s.q.GetUsersByKeyword.Select(&res, keyword)
return res, err
func (s *userManageSrv) GetUsersByKeyword(keyword string) (res []*ms.User, err error) {
keyword = strings.Trim(keyword, " ") + "%"
if keyword == "%" {
err = s.q.GetAnyUsers.Get(&res)
} else {
err = s.q.GetUsersByKeyword.Select(&res, keyword)
}
return
}
func (s *userManageSrv) CreateUser(r *ms.User) (*ms.User, error) {
res, err := s.q.AddUser.Exec(r.Username, r.Nickname, r.Password, r.Salt, r.Avatar)
r.Model = &ms.Model{
CreatedOn: time.Now().Unix(),
}
res, err := s.q.CreateUser.Exec(r)
if err != nil {
return nil, err
}
r.Model = &dbr.Model{}
r.ID, err = res.LastInsertId()
return r, err
}
func (s *userManageSrv) UpdateUser(r *ms.User) error {
_, err := s.q.UpdateUser.Exec(r.Nickname, r.Password, r.Salt, r.Phone, r.Status)
_, err := s.q.UpdateUser.Exec(r)
return err
}

@ -61,7 +61,7 @@ const (
_Message_GetUnreadCount = `SELECT count(*) FROM @message WHERE receiver_user_id=? AND is_read=0 AND is_del=0`
_Message_ReadMessage = `UPDATE @message SET is_read=1, modified_on=? WHERE id=?`
_Security_CreatePhoneCaptcha = `INSERT INTO @captcha (phone, captcha, expired_on, created_on) VALUES (:phone, :captcha, :expired_on, :created_on)`
_Security_GetLatestPhoneCaptcha = `SELECT * FROM @captcha WHERE phone=:phone AND is_del=0`
_Security_GetLatestPhoneCaptcha = `SELECT * FROM @captcha WHERE phone=? AND is_del=0`
_Security_UsePhoneCaptcha = `UPDATE @captcha SET use_times=use_times+1, modified_on=? WHERE id=? AND is_del=0`
_SimpleIndexA_UserInfo = `SELECT * FROM @user WHERE username=?`
_SimpleIndex_UserInfo = `SELECT * FROM @user WHERE username=?`
@ -115,13 +115,14 @@ const (
_TweetManage_StickPost = `SELECT * FROM @user WHERE username=?`
_TweetManage_UpdatePost = `SELECT * FROM @user WHERE username=?`
_TweetManage_VisiblePost = `SELECT * FROM @user WHERE username=?`
_UserManage_AddUser = `SELECT * FROM @user WHERE username=?`
_UserManage_GetUserById = `SELECT * FROM @user WHERE username=?`
_UserManage_GetUserByPhone = `SELECT * FROM @user WHERE username=?`
_UserManage_GetUserByUsername = `SELECT * FROM @user WHERE username=?`
_UserManage_GetUsersByIds = `SELECT * FROM @user WHERE username=?`
_UserManage_GetUsersByKeyword = `SELECT * FROM @user WHERE username=?`
_UserManage_UpdateUser = `SELECT * FROM @user WHERE username=?`
_UserManage_CreateUser = `INSERT INTO @user (username, nickname, password, salt, avatar, status, created_on) VALUES (:username, :nickname, :password, :salt, :avatar, :status, :created_on)`
_UserManage_GetAnyUsers = `SELECT * FROM @user WHERE is_del=0 ORDER BY id ASC limit 6`
_UserManage_GetUserById = `SELECT * FROM @user WHERE id=? AND is_del=0`
_UserManage_GetUserByPhone = `SELECT * FROM @user WHERE phone=? AND is_del=0`
_UserManage_GetUserByUsername = `SELECT * FROM @user WHERE username=? AND is_del=0`
_UserManage_GetUsersByIds = `SELECT * FROM @user WHERE id IN ? AND is_del=0`
_UserManage_GetUsersByKeyword = `SELECT * FROM @user WHERE username LIKE ? AND is_del=0 limit 6`
_UserManage_UpdateUser = `UPDATE @user SET username=:username, nickname=:nickname, phone=:phone, password=:password, salt=:salt, status=:status, avatar=:avatar, balance=:balance, is_admin=:is_admin, modified_on=:modified_on WHERE id=? AND is_del=0`
_Wallet_CreateRecharge = `SELECT * FROM @user WHERE username=?`
_Wallet_GetRechargeById = `SELECT * FROM @user WHERE username=?`
_Wallet_GetUserWalletBillCount = `SELECT * FROM @user WHERE username=?`
@ -320,12 +321,13 @@ type TweetManageA struct {
type UserManage struct {
yesql.Namespace `yesql:"user_manage"`
GetUsersByIds string `yesql:"get_users_by_ids"`
AddUser *sqlx.Stmt `yesql:"add_user"`
GetAnyUsers *sqlx.Stmt `yesql:"get_any_users"`
GetUserById *sqlx.Stmt `yesql:"get_user_by_id"`
GetUserByPhone *sqlx.Stmt `yesql:"get_user_by_phone"`
GetUserByUsername *sqlx.Stmt `yesql:"get_user_by_username"`
GetUsersByKeyword *sqlx.Stmt `yesql:"get_users_by_keyword"`
UpdateUser *sqlx.Stmt `yesql:"update_user"`
CreateUser *sqlx.NamedStmt `yesql:"create_user"`
UpdateUser *sqlx.NamedStmt `yesql:"update_user"`
}
type Wallet struct {
@ -862,7 +864,7 @@ func BuildUserManage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *User
obj = &UserManage{
GetUsersByIds: p.QueryHook(_UserManage_GetUsersByIds),
}
if obj.AddUser, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_AddUser))); err != nil {
if obj.GetAnyUsers, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_GetAnyUsers))); err != nil {
return
}
if obj.GetUserById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_GetUserById))); err != nil {
@ -877,7 +879,10 @@ func BuildUserManage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *User
if obj.GetUsersByKeyword, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_GetUsersByKeyword))); err != nil {
return
}
if obj.UpdateUser, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_UpdateUser))); err != nil {
if obj.CreateUser, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_UserManage_CreateUser))); err != nil {
return
}
if obj.UpdateUser, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_UserManage_UpdateUser))); err != nil {
return
}
return

@ -521,32 +521,38 @@ UPDATE @tag SET quote_num=quote_num+1, is_del=0, modified_on=? WHERE id IN (?);
-- name: get_user_by_id@user_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE id=? AND is_del=0;
-- name: get_user_by_username@user_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE username=? AND is_del=0;
-- name: get_user_by_phone@user_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE phone=? AND is_del=0;
-- name: get_users_by_ids@user_manage
-- prepare: raw
-- clause: in
SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE id IN ? AND is_del=0;
-- name: get_users_by_keyword@user_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE username LIKE ? AND is_del=0 limit 6;
-- name: add_user@user_manage
-- name: get_any_users@user_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE is_del=0 ORDER BY id ASC limit 6;
-- name: create_user@user_manage
-- prepare: named_stmt
INSERT INTO @user (username, nickname, password, salt, avatar, status, created_on) VALUES (:username, :nickname, :password, :salt, :avatar, :status, :created_on);
-- name: update_user@user_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
-- prepare: named_stmt
UPDATE @user SET username=:username, nickname=:nickname, phone=:phone,
password=:password, salt=:salt, status=:status, avatar=:avatar, balance=:balance,
is_admin=:is_admin, modified_on=:modified_on WHERE id=? AND is_del=0;
--------------------------------------------------------------------------------
-- wallet sql dml

Loading…
Cancel
Save