sqlx: messages logic is implemented complete. WIP %35

r/paopao-ce-plus
Michael Li 2 years ago
parent 7665c1fd0c
commit a9743e25bd
No known key found for this signature in database

@ -5,6 +5,8 @@
package sakila package sakila
import ( import (
"time"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
@ -21,17 +23,19 @@ type messageSrv struct {
q *cc.Message q *cc.Message
} }
func (s *messageSrv) CreateMessage(msg *ms.Message) (*ms.Message, error) { func (s *messageSrv) CreateMessage(r *ms.Message) (*ms.Message, error) {
res, err := s.q.CreateMessage.Exec(msg) r.Model = &dbr.Model{
CreatedOn: time.Now().Unix(),
}
res, err := s.q.CreateMessage.Exec(r)
if err != nil { if err != nil {
return nil, err return nil, err
} }
id, err := res.LastInsertId() r.ID, err = res.LastInsertId()
if err != nil { if err != nil {
return nil, err return nil, err
} }
msg.Model = &dbr.Model{ID: id} return r, nil
return msg, nil
} }
func (s *messageSrv) GetUnreadCount(userID int64) (res int64, err error) { func (s *messageSrv) GetUnreadCount(userID int64) (res int64, err error) {
@ -39,22 +43,28 @@ func (s *messageSrv) GetUnreadCount(userID int64) (res int64, err error) {
return return
} }
func (s *messageSrv) GetMessageByID(id int64) (*ms.Message, error) { func (s *messageSrv) GetMessageByID(id int64) (res *ms.Message, err error) {
res := &ms.Message{} err = s.q.GetMessageById.Get(res, id)
err := s.q.GetMessageById.Get(res, id) return
return res, err
} }
func (s *messageSrv) ReadMessage(message *ms.Message) (err error) { func (s *messageSrv) ReadMessage(r *ms.Message) (err error) {
_, err = s.q.ReadMessage.Exec(message) _, err = s.q.ReadMessage.Exec(time.Now().Unix(), r.ID)
return return
} }
func (s *messageSrv) GetMessages(r *ms.ConditionsT, offset, limit int) ([]*ms.MessageFormated, error) { func (s *messageSrv) GetMessages(r *ms.ConditionsT, offset, limit int) ([]*ms.MessageFormated, error) {
res := []*ms.MessageFormated{} var messages []*ms.Message
(*r)["limit"], (*r)["offset"] = limit, offset (*r)["limit"], (*r)["offset"] = limit, offset
err := s.q.GetMessages.Select(&res, r) if err := s.q.GetMessages.Select(&messages, r); err != nil {
return res, err return nil, err
}
mfs := make([]*dbr.MessageFormated, 0, len(messages))
for _, message := range messages {
mf := message.Format()
mfs = append(mfs, mf)
}
return mfs, nil
} }
func (s *messageSrv) GetMessageCount(r *ms.ConditionsT) (res int64, err error) { func (s *messageSrv) GetMessageCount(r *ms.ConditionsT) (res int64, err error) {

@ -54,12 +54,12 @@ const (
_FriendIndex_UserInfo = `SELECT * FROM @user WHERE username=?` _FriendIndex_UserInfo = `SELECT * FROM @user WHERE username=?`
_LightIndexA_UserInfo = `SELECT * FROM @user WHERE username=?` _LightIndexA_UserInfo = `SELECT * FROM @user WHERE username=?`
_LightIndex_UserInfo = `SELECT * FROM @user WHERE username=?` _LightIndex_UserInfo = `SELECT * FROM @user WHERE username=?`
_Message_CreateMessage = `SELECT * FROM @user WHERE username=?` _Message_CreateMessage = `INSERT INTO @message (sender_user_id, receiver_user_id, type, brief, content, post_id, comment_id, reply_id, created_on) VALUES (:sender_user_id, :receiver_user_id, :type, :brief, :content, :post_id, :comment_id, :reply_id, :created_on)`
_Message_GetMessageById = `SELECT * FROM @user WHERE username=?` _Message_GetMessageById = `SELECT * FROM @message WHERE id=? AND is_del=0`
_Message_GetMessageCount = `SELECT * FROM @user WHERE username=?` _Message_GetMessageCount = `SELECT count(*) FROM @message WHERE receiver_user_id=:recerver_user_id AND is_del=0`
_Message_GetMessages = `SELECT * FROM @user WHERE username=?` _Message_GetMessages = `SELECT * FROM @message WHERE receiver_user_id=:recerver_user_id AND is_del=0 ORDER BY id DESC LIMIT :limit OFFSET :offset`
_Message_GetUnreadCount = `SELECT * FROM @user WHERE username=?` _Message_GetUnreadCount = `SELECT count(*) FROM @message WHERE receiver_user_id=? AND is_read=0 AND is_del=0`
_Message_ReadMessage = `SELECT * FROM @user WHERE username=?` _Message_ReadMessage = `UPDATE @message SET is_read=1, modified_on=? WHERE id=?`
_Security_CreatePhoneCaptcha = `SELECT * FROM @user WHERE username=?` _Security_CreatePhoneCaptcha = `SELECT * FROM @user WHERE username=?`
_Security_GetLatestPhoneCaptcha = `SELECT * FROM @user WHERE username=?` _Security_GetLatestPhoneCaptcha = `SELECT * FROM @user WHERE username=?`
_Security_SendPhoneCaptcha = `SELECT * FROM @user WHERE username=?` _Security_SendPhoneCaptcha = `SELECT * FROM @user WHERE username=?`
@ -217,10 +217,10 @@ type Message struct {
yesql.Namespace `yesql:"message"` yesql.Namespace `yesql:"message"`
GetMessageById *sqlx.Stmt `yesql:"get_message_by_id"` GetMessageById *sqlx.Stmt `yesql:"get_message_by_id"`
GetUnreadCount *sqlx.Stmt `yesql:"get_unread_count"` GetUnreadCount *sqlx.Stmt `yesql:"get_unread_count"`
ReadMessage *sqlx.Stmt `yesql:"read_message"`
CreateMessage *sqlx.NamedStmt `yesql:"create_message"` CreateMessage *sqlx.NamedStmt `yesql:"create_message"`
GetMessageCount *sqlx.NamedStmt `yesql:"get_message_count"` GetMessageCount *sqlx.NamedStmt `yesql:"get_message_count"`
GetMessages *sqlx.NamedStmt `yesql:"get_messages"` GetMessages *sqlx.NamedStmt `yesql:"get_messages"`
ReadMessage *sqlx.NamedStmt `yesql:"read_message"`
} }
type Security struct { type Security struct {
@ -583,6 +583,9 @@ func BuildMessage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *Message
if obj.GetUnreadCount, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_Message_GetUnreadCount))); err != nil { if obj.GetUnreadCount, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_Message_GetUnreadCount))); err != nil {
return return
} }
if obj.ReadMessage, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_Message_ReadMessage))); err != nil {
return
}
if obj.CreateMessage, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_Message_CreateMessage))); err != nil { if obj.CreateMessage, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_Message_CreateMessage))); err != nil {
return return
} }
@ -592,9 +595,6 @@ func BuildMessage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *Message
if obj.GetMessages, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_Message_GetMessages))); err != nil { if obj.GetMessages, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_Message_GetMessages))); err != nil {
return return
} }
if obj.ReadMessage, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_Message_ReadMessage))); err != nil {
return
}
return return
} }

@ -167,27 +167,27 @@ SELECT true FROM @contact WHERE user_id=? AND friend_id=? AND is_del=0 AND statu
-- name: create_message@message -- name: create_message@message
-- prepare: named_stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? INSERT INTO @message (sender_user_id, receiver_user_id, type, brief, content, post_id, comment_id, reply_id, created_on) VALUES (:sender_user_id, :receiver_user_id, :type, :brief, :content, :post_id, :comment_id, :reply_id, :created_on);
-- name: get_unread_count@message -- name: get_unread_count@message
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT count(*) FROM @message WHERE receiver_user_id=? AND is_read=0 AND is_del=0;
-- name: get_message_by_id@message -- name: get_message_by_id@message
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @message WHERE id=? AND is_del=0;
-- name: read_message@message -- name: read_message@message
-- prepare: named_stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? UPDATE @message SET is_read=1, modified_on=? WHERE id=?;
-- name: get_messages@message -- name: get_messages@message
-- prepare: named_stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @message WHERE receiver_user_id=:recerver_user_id AND is_del=0 ORDER BY id DESC LIMIT :limit OFFSET :offset
-- name: get_message_count@message -- name: get_message_count@message
-- prepare: named_stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT count(*) FROM @message WHERE receiver_user_id=:recerver_user_id AND is_del=0;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- security sql dml -- security sql dml

Loading…
Cancel
Save