sqlx: fixed all create sql query error in postgres

r/paopao-ce-plus
Michael Li 2 years ago
parent 6c594a8b24
commit 5dc4c03a57
No known key found for this signature in database

@ -14,4 +14,5 @@ type (
CommentReply = dbr.CommentReply
CommentContent = dbr.CommentContent
CommentReplyFormated = dbr.CommentReplyFormated
TweetCommentThumbs = dbr.TweetCommentThumbs
)

@ -8,7 +8,6 @@ import (
"context"
"fmt"
"github.com/alimy/yesql"
"github.com/bitbus/sqlx"
)
@ -17,8 +16,7 @@ var (
)
const (
_TweetManage_AddPost = `INSERT INTO @post (user_id, tags, ip, ip_loc, attachment_price, visibility, latest_replied_on, created_on) VALUES (:user_id, :tags, :ip, :ip_loc, :attachment_price, :visibility, :latest_replied_on, :created_on) RETURNING id`
_TweetManage_AddPostContent = `INSERT INTO @post_content (post_id, user_id, content, type, sort, created_on) VALUES (:post_id, :user_id, :content, :type, :sort, :created_on) RETURNING id`
_InsertTag = `INSERT INTO @tag (user_id, tag, created_on, modified_on, quote_num) VALUES (?, ?, ?, ?, 1) RETURNING id`
)
// PreparexContext enhances the Conn interface with context.
@ -41,25 +39,20 @@ type PreparexBuilder interface {
QueryHook(query string) string
}
type TweetManage struct {
yesql.Namespace `yesql:"tweet_manage"`
AddPost *sqlx.NamedStmt `yesql:"add_post"`
AddPostContent *sqlx.NamedStmt `yesql:"add_post_content"`
type Yesql struct {
InsertTag *sqlx.Stmt `yesql:"insert_tag"`
}
func BuildTweetManage(p PreparexBuilder, ctx ...context.Context) (obj *TweetManage, err error) {
func BuildYesql(p PreparexBuilder, ctx ...context.Context) (obj *Yesql, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &TweetManage{}
if obj.AddPost, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_TweetManage_AddPost))); err != nil {
return nil, fmt.Errorf("prepare _TweetManage_AddPost error: %w", err)
}
if obj.AddPostContent, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_TweetManage_AddPostContent))); err != nil {
return nil, fmt.Errorf("prepare _TweetManage_AddPostContent error: %w", err)
obj = &Yesql{}
if obj.InsertTag, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_InsertTag))); err != nil {
return nil, fmt.Errorf("prepare _InsertTag error: %w", err)
}
return
}

@ -0,0 +1,60 @@
// Code generated by Yesql. DO NOT EDIT.
// versions:
// - Yesql v1.9.0
package pga
import (
"context"
"fmt"
"github.com/alimy/yesql"
"github.com/bitbus/sqlx"
)
var (
_ = fmt.Errorf("error for placeholder")
)
const (
_TopicA_InsertTag = `INSERT INTO @tag (user_id, tag, created_on, modified_on, quote_num) VALUES (?, ?, ?, ?, 1) RETURNING id`
)
// PreparexContext enhances the Conn interface with context.
type PreparexContext interface {
// PrepareContext prepares a statement.
// The provided context is used for the preparation of the statement, not for
// the execution of the statement.
PreparexContext(ctx context.Context, query string) (*sqlx.Stmt, error)
// PrepareNamedContext returns an sqlx.NamedStmt
PrepareNamedContext(ctx context.Context, query string) (*sqlx.NamedStmt, error)
// Rebind rebind query to adapte SQL Driver
Rebind(query string) string
}
// PreparexBuilder preparex builder interface for sqlx
type PreparexBuilder interface {
PreparexContext
QueryHook(query string) string
}
type TopicA struct {
yesql.Namespace `yesql:"topic_a"`
InsertTag *sqlx.Stmt `yesql:"insert_tag"`
}
func BuildTopicA(p PreparexBuilder, ctx ...context.Context) (obj *TopicA, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &TopicA{}
if obj.InsertTag, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_TopicA_InsertTag))); err != nil {
return nil, fmt.Errorf("prepare _TopicA_InsertTag error: %w", err)
}
return
}

@ -0,0 +1,190 @@
// Code generated by Yesql. DO NOT EDIT.
// versions:
// - Yesql v1.9.0
package pgc
import (
"context"
"fmt"
"github.com/alimy/yesql"
"github.com/bitbus/sqlx"
)
var (
_ = fmt.Errorf("error for placeholder")
)
const (
_CommentManage_CreateComment = `INSERT INTO @comment (post_id, user_id, ip, ip_loc, created_on) VALUES (?, ?, ?, ?, ?) RETURNING *`
_CommentManage_CreateCommentContent = `INSERT INTO @comment_content (comment_id, user_id, content, type, sort, created_on) VALUES (?, ?, ?, ?, ?, ?) RETURNING *`
_CommentManage_CreateCommentReply = `INSERT INTO @comment_reply (comment_id, user_id, content, at_user_id, ip, ip_loc, created_on) VALUES (?, ?, ?, ?, ?, ?, ?) RETURNING *`
_ContactManager_CreateContact = `INSERT INTO @contact (user_id, friend_id, status, created_on) VALUES (?, ?, ?, ?) RETURNING *`
_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) RETURNING id`
_TweetManage_AddAttachment = `INSERT INTO @attachment (user_id, file_size, img_width, img_height, type, content, created_on) VALUES (?, ?, ?, ?, ?, ?, ?) RETURNING id`
_TweetManage_AddPost = `INSERT INTO @post (user_id, tags, ip, ip_loc, attachment_price, visibility, latest_replied_on, created_on) VALUES (:user_id, :tags, :ip, :ip_loc, :attachment_price, :visibility, :latest_replied_on, :created_on) RETURNING id`
_TweetManage_AddPostCollection = `INSERT INTO @post_collection (post_id, user_id, created_on) VALUES (?, ?, ?) RETURNING *`
_TweetManage_AddPostContent = `INSERT INTO @post_content (post_id, user_id, content, type, sort, created_on) VALUES (:post_id, :user_id, :content, :type, :sort, :created_on) RETURNING id`
_TweetManage_AddPostStar = `INSERT INTO @post_star (post_id, user_id, created_on) VALUES (?, ?, ?) RETURNING *`
_UserManage_CreateUser = `INSERT INTO @user (username, nickname, password, salt, avatar, status, created_on) VALUES (:username, :nickname, :password, :salt, :avatar, :status, :created_on) RETURNING id`
_Wallet_CreateRecharge = `INSERT INTO @wallet_recharge (user_id, amount, created_on) VALUES (?, ?, ?) RETURNING *`
)
// PreparexContext enhances the Conn interface with context.
type PreparexContext interface {
// PrepareContext prepares a statement.
// The provided context is used for the preparation of the statement, not for
// the execution of the statement.
PreparexContext(ctx context.Context, query string) (*sqlx.Stmt, error)
// PrepareNamedContext returns an sqlx.NamedStmt
PrepareNamedContext(ctx context.Context, query string) (*sqlx.NamedStmt, error)
// Rebind rebind query to adapte SQL Driver
Rebind(query string) string
}
// PreparexBuilder preparex builder interface for sqlx
type PreparexBuilder interface {
PreparexContext
QueryHook(query string) string
}
type CommentManage struct {
yesql.Namespace `yesql:"comment_manage"`
CreateComment *sqlx.Stmt `yesql:"create_comment"`
CreateCommentContent *sqlx.Stmt `yesql:"create_comment_content"`
CreateCommentReply *sqlx.Stmt `yesql:"create_comment_reply"`
}
type ContactManager struct {
yesql.Namespace `yesql:"contact_manager"`
CreateContact *sqlx.Stmt `yesql:"create_contact"`
}
type Message struct {
yesql.Namespace `yesql:"message"`
CreateMessage *sqlx.NamedStmt `yesql:"create_message"`
}
type TweetManage struct {
yesql.Namespace `yesql:"tweet_manage"`
AddAttachment *sqlx.Stmt `yesql:"add_attachment"`
AddPostCollection *sqlx.Stmt `yesql:"add_post_collection"`
AddPostStar *sqlx.Stmt `yesql:"add_post_star"`
AddPost *sqlx.NamedStmt `yesql:"add_post"`
AddPostContent *sqlx.NamedStmt `yesql:"add_post_content"`
}
type UserManage struct {
yesql.Namespace `yesql:"user_manage"`
CreateUser *sqlx.NamedStmt `yesql:"create_user"`
}
type Wallet struct {
yesql.Namespace `yesql:"wallet"`
CreateRecharge *sqlx.Stmt `yesql:"create_recharge"`
}
func BuildCommentManage(p PreparexBuilder, ctx ...context.Context) (obj *CommentManage, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &CommentManage{}
if obj.CreateComment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_CommentManage_CreateComment))); err != nil {
return nil, fmt.Errorf("prepare _CommentManage_CreateComment error: %w", err)
}
if obj.CreateCommentContent, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_CommentManage_CreateCommentContent))); err != nil {
return nil, fmt.Errorf("prepare _CommentManage_CreateCommentContent error: %w", err)
}
if obj.CreateCommentReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_CommentManage_CreateCommentReply))); err != nil {
return nil, fmt.Errorf("prepare _CommentManage_CreateCommentReply error: %w", err)
}
return
}
func BuildContactManager(p PreparexBuilder, ctx ...context.Context) (obj *ContactManager, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &ContactManager{}
if obj.CreateContact, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ContactManager_CreateContact))); err != nil {
return nil, fmt.Errorf("prepare _ContactManager_CreateContact error: %w", err)
}
return
}
func BuildMessage(p PreparexBuilder, ctx ...context.Context) (obj *Message, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &Message{}
if obj.CreateMessage, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_Message_CreateMessage))); err != nil {
return nil, fmt.Errorf("prepare _Message_CreateMessage error: %w", err)
}
return
}
func BuildTweetManage(p PreparexBuilder, ctx ...context.Context) (obj *TweetManage, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &TweetManage{}
if obj.AddAttachment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_TweetManage_AddAttachment))); err != nil {
return nil, fmt.Errorf("prepare _TweetManage_AddAttachment error: %w", err)
}
if obj.AddPostCollection, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_TweetManage_AddPostCollection))); err != nil {
return nil, fmt.Errorf("prepare _TweetManage_AddPostCollection error: %w", err)
}
if obj.AddPostStar, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_TweetManage_AddPostStar))); err != nil {
return nil, fmt.Errorf("prepare _TweetManage_AddPostStar error: %w", err)
}
if obj.AddPost, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_TweetManage_AddPost))); err != nil {
return nil, fmt.Errorf("prepare _TweetManage_AddPost error: %w", err)
}
if obj.AddPostContent, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_TweetManage_AddPostContent))); err != nil {
return nil, fmt.Errorf("prepare _TweetManage_AddPostContent error: %w", err)
}
return
}
func BuildUserManage(p PreparexBuilder, ctx ...context.Context) (obj *UserManage, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &UserManage{}
if obj.CreateUser, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_UserManage_CreateUser))); err != nil {
return nil, fmt.Errorf("prepare _UserManage_CreateUser error: %w", err)
}
return
}
func BuildWallet(p PreparexBuilder, ctx ...context.Context) (obj *Wallet, err error) {
var c context.Context
if len(ctx) > 0 && ctx[0] != nil {
c = ctx[0]
} else {
c = context.Background()
}
obj = &Wallet{}
if obj.CreateRecharge, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_Wallet_CreateRecharge))); err != nil {
return nil, fmt.Errorf("prepare _Wallet_CreateRecharge error: %w", err)
}
return
}

@ -7,12 +7,13 @@ package sakila
import (
"time"
"github.com/alimy/cfg"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/cc"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
"github.com/rocboss/paopao-ce/pkg/types"
)
@ -144,7 +145,7 @@ func (s *commentManageSrv) CreateComment(r *ms.Comment) (*ms.Comment, error) {
if err != nil {
return nil, err
}
r.Model = &dbr.Model{
r.Model = &ms.Model{
ID: id,
}
return r, nil
@ -160,7 +161,7 @@ func (s *commentManageSrv) CreateCommentReply(r *ms.CommentReply) (*ms.CommentRe
if err != nil {
return nil, err
}
r.Model = &dbr.Model{ID: id}
r.Model = &ms.Model{ID: id}
return r, nil
}
@ -184,7 +185,7 @@ func (s *commentManageSrv) CreateCommentContent(r *ms.CommentContent) (*ms.Comme
if err != nil {
return nil, err
}
r.Model = &dbr.Model{ID: id}
r.Model = &ms.Model{ID: id}
return r, nil
}
@ -195,7 +196,7 @@ func (s *commentManageSrv) ThumbsUpComment(userId int64, tweetId, commentId int6
thumbsDownCount int32 = 0
)
now := time.Now().Unix()
commentThumbs := &dbr.TweetCommentThumbs{}
commentThumbs := &ms.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetTweetCommentThumb).Get(commentThumbs, userId, tweetId, commentId)
if err == nil {
@ -214,14 +215,14 @@ func (s *commentManageSrv) ThumbsUpComment(userId int64, tweetId, commentId int6
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
commentThumbs = &ms.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
IsThumbsUp: types.Yes,
IsThumbsDown: types.No,
CommentType: 0,
Model: &dbr.Model{
Model: &ms.Model{
CreatedOn: now,
},
}
@ -243,7 +244,7 @@ func (s *commentManageSrv) ThumbsDownComment(userId int64, tweetId, commentId in
thumbsDownCount int32 = 0
)
now := time.Now().Unix()
commentThumbs := &dbr.TweetCommentThumbs{}
commentThumbs := &ms.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetTweetCommentThumb).Get(commentThumbs, userId, tweetId, commentId)
if err == nil {
@ -263,14 +264,14 @@ func (s *commentManageSrv) ThumbsDownComment(userId int64, tweetId, commentId in
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
commentThumbs = &ms.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
IsThumbsUp: types.No,
IsThumbsDown: types.Yes,
CommentType: 0,
Model: &dbr.Model{
Model: &ms.Model{
CreatedOn: now,
},
}
@ -292,7 +293,7 @@ func (s *commentManageSrv) ThumbsUpReply(userId int64, tweetId, commentId, reply
thumbsDownCount int32 = 0
)
now := time.Now().Unix()
commentThumbs := &dbr.TweetCommentThumbs{}
commentThumbs := &ms.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetCommentReplyThumb).Get(commentThumbs, userId, tweetId, commentId, replyId)
if err == nil {
@ -311,7 +312,7 @@ func (s *commentManageSrv) ThumbsUpReply(userId int64, tweetId, commentId, reply
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
commentThumbs = &ms.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
@ -319,7 +320,7 @@ func (s *commentManageSrv) ThumbsUpReply(userId int64, tweetId, commentId, reply
IsThumbsUp: types.Yes,
IsThumbsDown: types.No,
CommentType: 1,
Model: &dbr.Model{
Model: &ms.Model{
CreatedOn: now,
},
}
@ -341,7 +342,7 @@ func (s *commentManageSrv) ThumbsDownReply(userId int64, tweetId, commentId, rep
thumbsDownCount int32 = 0
)
now := time.Now().Unix()
commentThumbs := &dbr.TweetCommentThumbs{}
commentThumbs := &ms.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetCommentReplyThumb).Get(commentThumbs, userId, tweetId, commentId, replyId)
if err == nil {
@ -360,7 +361,7 @@ func (s *commentManageSrv) ThumbsDownReply(userId int64, tweetId, commentId, rep
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
commentThumbs = &ms.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
@ -368,7 +369,7 @@ func (s *commentManageSrv) ThumbsDownReply(userId int64, tweetId, commentId, rep
IsThumbsUp: types.No,
IsThumbsDown: types.Yes,
CommentType: 1,
Model: &dbr.Model{
Model: &ms.Model{
CreatedOn: now,
},
}
@ -390,9 +391,17 @@ func newCommentService(db *sqlx.DB) core.CommentService {
}
}
func newCommentManageService(db *sqlx.DB) core.CommentManageService {
return &commentManageSrv{
func newCommentManageService(db *sqlx.DB) (s core.CommentManageService) {
cms := &commentManageSrv{
sqlxSrv: newSqlxSrv(db),
q: ccBuild(db, cc.BuildCommentManage),
}
s = cms
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
s = &pgcCommentManageSrv{
commentManageSrv: cms,
p: pgcBuild(db, pgc.BuildCommentManage),
}
}
return
}

@ -0,0 +1,43 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
_ core.CommentManageService = (*pgcCommentManageSrv)(nil)
)
type pgcCommentManageSrv struct {
*commentManageSrv
p *pgc.CommentManage
}
func (s *pgcCommentManageSrv) CreateComment(r *ms.Comment) (res *ms.Comment, err error) {
err = stmtGet(s.q.CreateComment, res,
r.PostID, r.UserID, r.IP,
r.IPLoc, time.Now().Unix())
return
}
func (s *pgcCommentManageSrv) CreateCommentReply(r *ms.CommentReply) (res *ms.CommentReply, err error) {
err = stmtGet(s.q.CreateCommentReply, res,
r.CommentID, r.UserID, r.Content,
r.AtUserID, r.IP, r.IPLoc, time.Now().Unix())
return
}
func (s *pgcCommentManageSrv) CreateCommentContent(r *ms.CommentContent) (res *ms.CommentContent, err error) {
err = stmtGet(s.q.CreateCommentContent, res,
r.CommentID, r.UserID, r.Content,
r.Type, r.Sort, time.Now().Unix())
return
}

@ -7,11 +7,13 @@ package sakila
import (
"time"
"github.com/alimy/cfg"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/cc"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
"github.com/sirupsen/logrus"
)
@ -21,12 +23,13 @@ var (
type contactManageSrv struct {
*sqlxSrv
q *cc.ContactManager
q *cc.ContactManager
upsertContact func(tx *sqlx.Tx, userId int64, friendId int64, status int8) (*cs.Contact, error)
}
func (s *contactManageSrv) RequestingFriend(userId int64, friendId int64, greetings string) error {
return s.db.Withx(func(tx *sqlx.Tx) error {
contact, err := s.fetchOrNewContact(tx, userId, friendId, cs.ContactStatusRequesting)
contact, err := s.upsertContact(tx, userId, friendId, cs.ContactStatusRequesting)
if err != nil {
return err
}
@ -78,7 +81,7 @@ func (s *contactManageSrv) AddFriend(userId int64, friendId int64) error {
if _, err = tx.Stmtx(s.q.FreshContactStatus).Exec(args...); err != nil {
return err
}
contact, err = s.fetchOrNewContact(tx, userId, friendId, cs.ContactStatusAgree)
contact, err = s.upsertContact(tx, userId, friendId, cs.ContactStatusAgree)
if err != nil {
return err
}
@ -179,9 +182,20 @@ func (s *contactManageSrv) fetchOrNewContact(tx *sqlx.Tx, userId int64, friendId
}, nil
}
func newContactManageService(db *sqlx.DB) core.ContactManageService {
return &contactManageSrv{
func newContactManageService(db *sqlx.DB) (s core.ContactManageService) {
cms := &contactManageSrv{
sqlxSrv: newSqlxSrv(db),
q: ccBuild(db, cc.BuildContactManager),
}
cms.upsertContact = cms.fetchOrNewContact
s = cms
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
pgcms := &pgcContactManageSrv{
contactManageSrv: cms,
p: pgcBuild(db, pgc.BuildContactManager),
}
pgcms.upsertContact = pgcms.pgcFetchOrNewContact
s = pgcms
}
return
}

@ -0,0 +1,30 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
_ core.ContactManageService = (*pgcContactManageSrv)(nil)
)
type pgcContactManageSrv struct {
*contactManageSrv
p *pgc.ContactManager
}
func (s *pgcContactManageSrv) pgcFetchOrNewContact(tx *sqlx.Tx, userId int64, friendId int64, status int8) (res *cs.Contact, err error) {
if err = stmtGet(tx.Stmtx(s.q.GetContact), res, userId, friendId); err != nil {
err = stmtGet(tx.Stmtx(s.p.CreateContact), res, userId, friendId, status, time.Now().Unix())
}
return
}

@ -7,11 +7,12 @@ package sakila
import (
"time"
"github.com/alimy/cfg"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/cc"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
"github.com/sirupsen/logrus"
)
@ -25,7 +26,7 @@ type messageSrv struct {
}
func (s *messageSrv) CreateMessage(r *ms.Message) (*ms.Message, error) {
r.Model = &dbr.Model{
r.Model = &ms.Model{
CreatedOn: time.Now().Unix(),
}
res, err := s.q.CreateMessage.Exec(r)
@ -60,7 +61,7 @@ func (s *messageSrv) GetMessages(r *ms.ConditionsT, offset, limit int) ([]*ms.Me
if err := s.q.GetMessages.Select(&messages, *r); err != nil {
return nil, err
}
mfs := make([]*dbr.MessageFormated, 0, len(messages))
mfs := make([]*ms.MessageFormated, 0, len(messages))
for _, message := range messages {
mf := message.Format()
mfs = append(mfs, mf)
@ -75,9 +76,17 @@ func (s *messageSrv) GetMessageCount(r *ms.ConditionsT) (res int64, err error) {
return
}
func newMessageService(db *sqlx.DB) core.MessageService {
return &messageSrv{
func newMessageService(db *sqlx.DB) (s core.MessageService) {
ms := &messageSrv{
sqlxSrv: newSqlxSrv(db),
q: ccBuild(db, cc.BuildMessage),
}
s = ms
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
s = &pgcMessageSrv{
messageSrv: ms,
p: pgcBuild(db, pgc.BuildMessage),
}
}
return
}

@ -0,0 +1,33 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
_ core.MessageService = (*pgcMessageSrv)(nil)
)
type pgcMessageSrv struct {
*messageSrv
p *pgc.Message
}
func (s *pgcMessageSrv) CreateMessage(r *ms.Message) (*ms.Message, error) {
r.Model = &dbr.Model{
CreatedOn: time.Now().Unix(),
}
if err := s.p.CreateMessage.Get(&r.ID, r); err != nil {
return nil, err
}
return r, nil
}

@ -8,6 +8,7 @@ import (
"bytes"
"context"
"github.com/alimy/cfg"
"github.com/alimy/yesql"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/conf"
@ -15,6 +16,8 @@ import (
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/ac"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/cc"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pg"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pga"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
"github.com/sirupsen/logrus"
)
@ -24,15 +27,22 @@ var (
)
type sqlxSrv struct {
db *sqlx.DB
y *yc.Yesql
db *sqlx.DB
y *yc.Yesql
insertTag *sqlx.Stmt
}
func newSqlxSrv(db *sqlx.DB) *sqlxSrv {
return &sqlxSrv{
func newSqlxSrv(db *sqlx.DB) (s *sqlxSrv) {
s = &sqlxSrv{
db: db,
y: mustBuild(db, yc.BuildYesql),
}
s.insertTag = s.y.InsertTag
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
g := pgBuild(s.db, pg.BuildYesql)
s.insertTag = g.InsertTag
}
return
}
//lint:ignore U1000 stmtGet
@ -47,6 +57,18 @@ func stmtGetContext[T any](ctx context.Context, stmt *sqlx.Stmt, dest *T, args .
return stmt.GetContext(ctx, dest, args...)
}
//lint:ignore U1000 namedGet
func namedGet[T any](stmt *sqlx.NamedStmt, dest *T, arg any) error {
*dest = *new(T)
return stmt.Get(dest, arg)
}
//lint:ignore U1000 namesGetContext
func namesGetContext[T any](ctx context.Context, stmt *sqlx.NamedStmt, dest *T, arg any) error {
*dest = *new(T)
return stmt.GetContext(ctx, dest, arg)
}
//lint:ignore U1000 inGet
func inGet[T any](q sqlx.Queryable, dest *T, query string, args ...any) error {
*dest = *new(T)
@ -188,6 +210,46 @@ func pgBuildFn[T any](db *sqlx.DB, fn func(pg.PreparexBuilder) (T, error)) T {
return obj
}
//lint:ignore U1000 pgBuild
func pgaBuild[T any](db *sqlx.DB, fn func(pga.PreparexBuilder, ...context.Context) (T, error)) T {
p := yesql.NewPreparexBuilder(db, t)
obj, err := fn(p)
if err != nil {
logrus.Fatalf("build object failure: %s", err)
}
return obj
}
//lint:ignore U1000 pgBuildFn
func pgaBuildFn[T any](db *sqlx.DB, fn func(pga.PreparexBuilder) (T, error)) T {
p := yesql.NewPreparexBuilder(db, t)
obj, err := fn(p)
if err != nil {
logrus.Fatalf("build object failure: %s", err)
}
return obj
}
//lint:ignore U1000 pgBuild
func pgcBuild[T any](db *sqlx.DB, fn func(pgc.PreparexBuilder, ...context.Context) (T, error)) T {
p := yesql.NewPreparexBuilder(db, t)
obj, err := fn(p)
if err != nil {
logrus.Fatalf("build object failure: %s", err)
}
return obj
}
//lint:ignore U1000 pgBuildFn
func pgcBuildFn[T any](db *sqlx.DB, fn func(pgc.PreparexBuilder) (T, error)) T {
p := yesql.NewPreparexBuilder(db, t)
obj, err := fn(p)
if err != nil {
logrus.Fatalf("build object failure: %s", err)
}
return obj
}
func initSqlxDB() {
_db = conf.MustSqlxDB()
_tablePrefix = conf.DatabaseSetting.TablePrefix

@ -8,10 +8,12 @@ import (
"strings"
"time"
"github.com/alimy/cfg"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/ac"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pga"
)
var (
@ -187,16 +189,32 @@ func (s *topicSrvA) tagsFormatA(userId int64, tags cs.TagList) (cs.TagList, erro
return tags, nil
}
func newTopicService(db *sqlx.DB) core.TopicService {
return &topicSrvA{
func newTopicService(db *sqlx.DB) (s core.TopicService) {
ts := &topicSrvA{
sqlxSrv: newSqlxSrv(db),
q: acBuild(db, ac.BuildTopicA),
}
s = ts
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
s = &pgaTopicSrvA{
topicSrvA: ts,
p: pgaBuild(db, pga.BuildTopicA),
}
}
return
}
func newTopicServantA(db *sqlx.DB) core.TopicServantA {
return &topicSrvA{
func newTopicServantA(db *sqlx.DB) (s core.TopicServantA) {
ts := &topicSrvA{
sqlxSrv: newSqlxSrv(db),
q: acBuild(db, ac.BuildTopicA),
}
s = ts
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
s = &pgaTopicSrvA{
topicSrvA: ts,
p: pgaBuild(db, pga.BuildTopicA),
}
}
return
}

@ -0,0 +1,80 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pga"
)
var (
_ core.TopicService = (*pgaTopicSrvA)(nil)
_ core.TopicServantA = (*pgaTopicSrvA)(nil)
)
type pgaTopicSrvA struct {
*topicSrvA
p *pga.TopicA
}
func (s *pgaTopicSrvA) UpsertTags(userId int64, tags []string) (res cs.TagInfoList, xerr error) {
if len(tags) == 0 {
return nil, nil
}
xerr = s.db.Withx(func(tx *sqlx.Tx) error {
var upTags cs.TagInfoList
err := tx.InSelect(&upTags, s.q.TagsForIncr, tags)
if err != nil {
return err
}
now := time.Now().Unix()
if len(upTags) > 0 {
var ids []int64
for _, t := range upTags {
ids = append(ids, t.ID)
t.QuoteNum++
// prepare remain tags just delete updated tag
// notice ensure tags slice is distinct elements
for i, name := range tags {
if name == t.Tag {
lastIdx := len(tags) - 1
tags[i] = tags[lastIdx]
tags = tags[:lastIdx]
break
}
}
}
if _, err := tx.InExec(s.q.IncrTagsById, now, ids); err != nil {
return err
}
res = append(res, upTags...)
}
// process remain tags if tags is not empty
if len(tags) == 0 {
return nil
}
var (
id int64
ids []int64
)
for _, tag := range tags {
if err = s.p.InsertTag.Get(&id, userId, tag, now, now); err != nil {
return err
}
ids = append(ids, id)
}
var newTags cs.TagInfoList
if err := tx.InSelect(&newTags, s.q.TagsByIdB, ids); err != nil {
return err
}
res = append(res, newTags...)
return nil
})
return
}

@ -13,9 +13,8 @@ import (
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/cc"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pg"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
@ -59,16 +58,16 @@ func (s *tweetHelpSrv) MergePosts(posts []*ms.Post) ([]*ms.PostFormated, error)
if err != nil {
return nil, err
}
userMap := make(map[int64]*dbr.UserFormated, len(users))
userMap := make(map[int64]*ms.UserFormated, len(users))
for _, user := range users {
userMap[user.ID] = user
}
contentMap := make(map[int64][]*dbr.PostContentFormated, len(postContents))
contentMap := make(map[int64][]*ms.PostContentFormated, len(postContents))
for _, content := range postContents {
contentMap[content.PostID] = append(contentMap[content.PostID], content)
}
// 数据整合
postsFormated := make([]*dbr.PostFormated, 0, len(posts))
postsFormated := make([]*ms.PostFormated, 0, len(posts))
for _, post := range posts {
postFormated := post.Format()
postFormated.User = userMap[post.UserID]
@ -97,11 +96,11 @@ func (s *tweetHelpSrv) RevampPosts(posts []*ms.PostFormated) ([]*ms.PostFormated
if err != nil {
return nil, err
}
userMap := make(map[int64]*dbr.UserFormated, len(users))
userMap := make(map[int64]*ms.UserFormated, len(users))
for _, user := range users {
userMap[user.ID] = user
}
contentMap := make(map[int64][]*dbr.PostContentFormated, len(postContents))
contentMap := make(map[int64][]*ms.PostContentFormated, len(postContents))
for _, content := range postContents {
contentMap[content.PostID] = append(contentMap[content.PostID], content)
}
@ -113,12 +112,12 @@ func (s *tweetHelpSrv) RevampPosts(posts []*ms.PostFormated) ([]*ms.PostFormated
return posts, nil
}
func (s *tweetHelpSrv) getPostContentsByIDs(ids []int64) (res []*dbr.PostContentFormated, err error) {
func (s *tweetHelpSrv) getPostContentsByIDs(ids []int64) (res []*ms.PostContentFormated, err error) {
err = s.db.InSelect(&res, s.q.GetPostContentByIds, ids)
return
}
func (s *tweetHelpSrv) getUsersByIDs(ids []int64) (res []*dbr.UserFormated, err error) {
func (s *tweetHelpSrv) getUsersByIDs(ids []int64) (res []*ms.UserFormated, err error) {
err = s.db.InSelect(&res, s.q.GetUsersByIds, ids)
return
}
@ -134,7 +133,7 @@ func (s *tweetManageSrv) CreatePostCollection(postID, userID int64) (*ms.PostCol
return nil, err
}
return &ms.PostCollection{
Model: &dbr.Model{
Model: &ms.Model{
ID: id,
CreatedOn: now,
},
@ -172,7 +171,7 @@ func (s *tweetManageSrv) CreateAttachment(r *ms.Attachment) (int64, error) {
func (s *tweetManageSrv) CreatePost(r *ms.Post) (*ms.Post, error) {
now := time.Now().Unix()
r.Model = &dbr.Model{CreatedOn: now}
r.Model = &ms.Model{CreatedOn: now}
r.LatestRepliedOn = now
res, err := s.q.AddPost.Exec(r)
if err != nil {
@ -287,10 +286,10 @@ func (s *tweetManageSrv) VisiblePost(post *ms.Post, visibility core.PostVisibleT
// tag处理
tags := strings.Split(post.Tags, ",")
// TODO: 暂时宽松不处理错误,这里或许可以有优化,后续完善
if oldVisibility == dbr.PostVisitPrivate {
if oldVisibility == ms.PostVisitPrivate {
// 从私密转为非私密才需要重新创建tag
s.createTags(tx, post.UserID, tags)
} else if visibility == dbr.PostVisitPrivate {
} else if visibility == ms.PostVisitPrivate {
// 从非私密转为私密才需要删除tag
s.deleteTags(tx, tags)
}
@ -320,7 +319,7 @@ func (s *tweetManageSrv) CreatePostStar(postID, userID int64) (*ms.PostStar, err
return nil, err
}
return &ms.PostStar{
Model: &dbr.Model{
Model: &ms.Model{
ID: id,
CreatedOn: now,
},
@ -485,9 +484,9 @@ func newTweetManageService(db *sqlx.DB, cacheIndex core.CacheIndexService) (s co
}
s = tms
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
s = &pgTweetManageSrv{
s = &pgcTweetManageSrv{
tweetManageSrv: tms,
p: pgBuild(db, pg.BuildTweetManage),
p: pgcBuild(db, pgc.BuildTweetManage),
}
}
return

@ -1,44 +0,0 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pg"
)
var (
_ core.TweetManageService = (*pgTweetManageSrv)(nil)
)
type pgTweetManageSrv struct {
*tweetManageSrv
p *pg.TweetManage
}
func (s *pgTweetManageSrv) CreatePost(r *ms.Post) (*ms.Post, error) {
now := time.Now().Unix()
r.Model = &dbr.Model{CreatedOn: now}
r.LatestRepliedOn = now
err := s.p.AddPost.Get(&r.ID, r)
if err != nil {
return nil, err
}
s.cis.SendAction(core.IdxActCreatePost, r)
return r, nil
}
func (s *pgTweetManageSrv) CreatePostContent(r *ms.PostContent) (*ms.PostContent, error) {
r.Model = &ms.Model{CreatedOn: time.Now().Unix()}
err := s.p.AddPostContent.Get(&r.ID, r)
if err != nil {
return nil, err
}
return r, nil
}

@ -0,0 +1,58 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
_ core.TweetManageService = (*pgcTweetManageSrv)(nil)
)
type pgcTweetManageSrv struct {
*tweetManageSrv
p *pgc.TweetManage
}
func (s *pgcTweetManageSrv) CreatePost(r *ms.Post) (*ms.Post, error) {
now := time.Now().Unix()
r.Model = &ms.Model{CreatedOn: now}
r.LatestRepliedOn = now
err := s.p.AddPost.Get(&r.ID, r)
if err != nil {
return nil, err
}
s.cis.SendAction(core.IdxActCreatePost, r)
return r, nil
}
func (s *pgcTweetManageSrv) CreatePostContent(r *ms.PostContent) (*ms.PostContent, error) {
r.Model = &ms.Model{CreatedOn: time.Now().Unix()}
if err := s.p.AddPostContent.Get(&r.ID, r); err != nil {
return nil, err
}
return r, nil
}
func (s *pgcTweetManageSrv) CreateAttachment(r *ms.Attachment) (res int64, err error) {
args := []any{r.UserID, r.FileSize, r.ImgWidth, r.ImgHeight, r.Type, r.Content, time.Now().Unix()}
err = s.p.AddAttachment.Get(&res, args...)
return
}
func (s *pgcTweetManageSrv) CreatePostStar(postID, userID int64) (res *ms.PostStar, err error) {
err = stmtGet(s.q.AddPostStar, res, postID, userID, time.Now().Unix())
return
}
func (s *pgcTweetManageSrv) CreatePostCollection(postID, userID int64) (res *ms.PostCollection, err error) {
err = stmtGet(s.q.AddPostCollection, res, postID, userID, time.Now().Unix())
return
}

@ -8,10 +8,12 @@ import (
"strings"
"time"
"github.com/alimy/cfg"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/cc"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
@ -73,9 +75,17 @@ func (s *userManageSrv) UpdateUser(r *ms.User) error {
return err
}
func newUserManageService(db *sqlx.DB) core.UserManageService {
return &userManageSrv{
func newUserManageService(db *sqlx.DB) (s core.UserManageService) {
ums := &userManageSrv{
sqlxSrv: newSqlxSrv(db),
q: ccBuild(db, cc.BuildUserManage),
}
s = ums
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
s = &pgcUserManageSrv{
userManageSrv: ums,
p: pgcBuild(db, pgc.BuildUserManage),
}
}
return
}

@ -0,0 +1,30 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
_ core.UserManageService = (*pgcUserManageSrv)(nil)
)
type pgcUserManageSrv struct {
*userManageSrv
p *pgc.UserManage
}
func (s *pgcUserManageSrv) CreateUser(r *ms.User) (*ms.User, error) {
r.Model = &ms.Model{CreatedOn: time.Now().Unix()}
if err := s.q.CreateUser.Get(&r.ID, r); err != nil {
return nil, err
}
return r, nil
}

@ -32,7 +32,8 @@ func (s *sqlxSrv) createTags(tx *sqlx.Tx, userId int64, tags []string) (res cs.T
}
xerr = s.db.Withx(func(tx *sqlx.Tx) error {
var upTags cs.TagInfoList
if err := tx.InSelect(&upTags, s.y.TagsForIncr, tags); err != nil {
err := tx.InSelect(&upTags, s.y.TagsForIncr, tags)
if err != nil {
return err
}
now := time.Now().Unix()
@ -61,14 +62,12 @@ func (s *sqlxSrv) createTags(tx *sqlx.Tx, userId int64, tags []string) (res cs.T
if len(tags) == 0 {
return nil
}
var ids []int64
var (
id int64
ids []int64
)
for _, tag := range tags {
res, err := s.y.InsertTag.Exec(userId, tag, now, now)
if err != nil {
return err
}
id, err := res.LastInsertId()
if err != nil {
if err = s.insertTag.Get(&id, userId, tag, now, now); err != nil {
return err
}
ids = append(ids, id)

@ -7,12 +7,13 @@ package sakila
import (
"time"
"github.com/alimy/cfg"
"github.com/bitbus/sqlx"
"github.com/rocboss/paopao-ce/internal/conf"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/cc"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
@ -40,7 +41,7 @@ func (s *walletSrv) CreateRecharge(userId, amount int64) (*ms.WalletRecharge, er
return nil, err
}
return &ms.WalletRecharge{
Model: &dbr.Model{
Model: &ms.Model{
ID: id,
CreatedOn: now,
},
@ -123,9 +124,17 @@ func (s *walletSrv) HandlePostAttachmentBought(post *ms.Post, user *ms.User) err
})
}
func newWalletService(db *sqlx.DB) core.WalletService {
return &walletSrv{
func newWalletService(db *sqlx.DB) (s core.WalletService) {
ws := &walletSrv{
sqlxSrv: newSqlxSrv(db),
q: ccBuild(db, cc.BuildWallet),
}
s = ws
if cfg.Any("PostgreSQL", "PgSQL", "Postgres") {
s = &pgcWalletSrv{
walletSrv: ws,
p: pgcBuild(db, pgc.BuildWallet),
}
}
return
}

@ -0,0 +1,27 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package sakila
import (
"time"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/sakila/auto/pgc"
)
var (
_ core.WalletService = (*pgcWalletSrv)(nil)
)
type pgcWalletSrv struct {
*walletSrv
p *pgc.Wallet
}
func (s *pgcWalletSrv) CreateRecharge(userId, amount int64) (res *ms.WalletRecharge, err error) {
err = stmtGet(s.q.CreateRecharge, res, userId, amount, time.Now().Unix())
return
}

@ -26,3 +26,13 @@ sql:
package: pg
out: ../auto/pg
go_file_name: pg
- queries: yesql_pga.sql
gen:
package: pga
out: ../auto/pga
go_file_name: pga
- queries: yesql_pgc.sql
gen:
package: pgc
out: ../auto/pgc
go_file_name: pgc

@ -1,16 +1,16 @@
--------------------------------------------------------------------------------
-- file yesql.sql
-- file yesql_pg.sql
-- this sql file just define global sql dml
-- this sql file contain some PostgreSQL special sql dml
--------------------------------------------------------------------------------
-- name: add_post@tweet_manage
-- prepare: named_stmt
INSERT INTO @post (user_id, tags, ip, ip_loc, attachment_price, visibility, latest_replied_on, created_on)
VALUES (:user_id, :tags, :ip, :ip_loc, :attachment_price, :visibility, :latest_replied_on, :created_on)
RETURNING id;
--------------------------------------------------------------------------------
-- global sql dml
--------------------------------------------------------------------------------
-- name: add_post_content@tweet_manage
-- prepare: named_stmt
INSERT INTO @post_content (post_id, user_id, content, type, sort, created_on)
VALUES (:post_id, :user_id, :content, :type, :sort, :created_on)
-- name: insert_tag
-- prepare: stmt
INSERT INTO @tag (user_id, tag, created_on, modified_on, quote_num)
VALUES (?, ?, ?, ?, 1)
RETURNING id;

@ -0,0 +1,14 @@
--------------------------------------------------------------------------------
-- file yesql.sql
-- this sql file contain some PostgreSQL special sql dml
-- version is a*
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- topic_a sql dml
--------------------------------------------------------------------------------
-- name: insert_tag@topic_a
INSERT INTO @tag (user_id, tag, created_on, modified_on, quote_num)
VALUES (?, ?, ?, ?, 1)
RETURNING id;

@ -0,0 +1,99 @@
--------------------------------------------------------------------------------
-- file yesql.sql
-- this sql file contain some PostgreSQL special sql dml
-- version is c*
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- tweet_manage sql dml
--------------------------------------------------------------------------------
-- name: add_post@tweet_manage
-- prepare: named_stmt
INSERT INTO @post (user_id, tags, ip, ip_loc, attachment_price, visibility, latest_replied_on, created_on)
VALUES (:user_id, :tags, :ip, :ip_loc, :attachment_price, :visibility, :latest_replied_on, :created_on)
RETURNING id;
-- name: add_post_content@tweet_manage
-- prepare: named_stmt
INSERT INTO @post_content (post_id, user_id, content, type, sort, created_on)
VALUES (:post_id, :user_id, :content, :type, :sort, :created_on)
RETURNING id;
-- name: add_attachment@tweet_manage
-- prepare: stmt
INSERT INTO @attachment (user_id, file_size, img_width, img_height, type, content, created_on)
VALUES (?, ?, ?, ?, ?, ?, ?)
RETURNING id;
-- name: add_post_star@tweet_manage
-- prepare: stmt
INSERT INTO @post_star (post_id, user_id, created_on)
VALUES (?, ?, ?)
RETURNING *;
-- name: add_post_collection@tweet_manage
-- prepare: stmt
INSERT INTO @post_collection (post_id, user_id, created_on)
VALUES (?, ?, ?)
RETURNING *;
--------------------------------------------------------------------------------
-- user_manage sql dml
--------------------------------------------------------------------------------
-- 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)
RETURNING id;
--------------------------------------------------------------------------------
-- comment_manage sql dml
--------------------------------------------------------------------------------
-- name: create_comment@comment_manage
-- prepare: stmt
INSERT INTO @comment (post_id, user_id, ip, ip_loc, created_on)
VALUES (?, ?, ?, ?, ?)
RETURNING *;
-- name: create_comment_content@comment_manage
-- prepare: stmt
INSERT INTO @comment_content (comment_id, user_id, content, type, sort, created_on)
VALUES (?, ?, ?, ?, ?, ?)
RETURNING *;
-- name: create_comment_reply@comment_manage
-- prepare: stmt
INSERT INTO @comment_reply (comment_id, user_id, content, at_user_id, ip, ip_loc, created_on)
VALUES (?, ?, ?, ?, ?, ?, ?)
RETURNING *;
--------------------------------------------------------------------------------
-- contact_manager sql dml
--------------------------------------------------------------------------------
-- name: create_contact@contact_manager
-- prepare: stmt
INSERT INTO @contact (user_id, friend_id, status, created_on) VALUES (?, ?, ?, ?)
RETURNING *;
--------------------------------------------------------------------------------
-- message sql dml
--------------------------------------------------------------------------------
-- name: create_message@message
-- prepare: named_stmt
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)
RETURNING id;
--------------------------------------------------------------------------------
-- wallet sql dml
--------------------------------------------------------------------------------
-- name: create_recharge@wallet
-- prepare: stmt
INSERT INTO @wallet_recharge (user_id, amount, created_on) VALUES (?, ?, ?)
RETURNING *;
Loading…
Cancel
Save