Split reply.go into reply.go, reply_store.go, and profile_reply_store.go
This commit is contained in:
parent
6b64a2e28d
commit
aab949cb2d
|
@ -0,0 +1,35 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
|
||||||
|
"./query_gen/lib"
|
||||||
|
)
|
||||||
|
|
||||||
|
var prstore ProfileReplyStore
|
||||||
|
|
||||||
|
type ProfileReplyStore interface {
|
||||||
|
Get(id int) (*Reply, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Refactor this to stop using the global stmt store
|
||||||
|
// TODO: Add more methods to this like Create()
|
||||||
|
type SQLProfileReplyStore struct {
|
||||||
|
get *sql.Stmt
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSQLProfileReplyStore() (*SQLProfileReplyStore, error) {
|
||||||
|
getUserReplyStmt, err := qgen.Builder.SimpleSelect("users_replies", "uid, content, createdBy, createdAt, lastEdit, lastEditBy, ipaddress", "rid = ?", "", "")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &SQLProfileReplyStore{
|
||||||
|
get: getUserReplyStmt,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store *SQLProfileReplyStore) Get(id int) (*Reply, error) {
|
||||||
|
reply := Reply{ID: id}
|
||||||
|
err := store.get.QueryRow(id).Scan(&reply.ParentID, &reply.Content, &reply.CreatedBy, &reply.CreatedAt, &reply.LastEdit, &reply.LastEditBy, &reply.IPAddress)
|
||||||
|
return &reply, err
|
||||||
|
}
|
88
reply.go
88
reply.go
|
@ -7,17 +7,10 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
|
||||||
"errors"
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"./query_gen/lib"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ? - Should we add a reply store to centralise all the reply logic? Would this cover profile replies too or would that be separate?
|
|
||||||
var rstore ReplyStore
|
|
||||||
var prstore ProfileReplyStore
|
|
||||||
|
|
||||||
type ReplyUser struct {
|
type ReplyUser struct {
|
||||||
ID int
|
ID int
|
||||||
ParentID int
|
ParentID int
|
||||||
|
@ -102,84 +95,3 @@ func (reply *Reply) Delete() error {
|
||||||
func (reply *Reply) Copy() Reply {
|
func (reply *Reply) Copy() Reply {
|
||||||
return *reply
|
return *reply
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Refactor this to stop hitting the global stmt store
|
|
||||||
type ReplyStore interface {
|
|
||||||
Get(id int) (*Reply, error)
|
|
||||||
Create(tid int, content string, ipaddress string, fid int, uid int) (id int, err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type SQLReplyStore struct {
|
|
||||||
get *sql.Stmt
|
|
||||||
create *sql.Stmt
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSQLReplyStore() (*SQLReplyStore, error) {
|
|
||||||
getReplyStmt, err := qgen.Builder.SimpleSelect("replies", "tid, content, createdBy, createdAt, lastEdit, lastEditBy, ipaddress, likeCount", "rid = ?", "", "")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
createReplyStmt, err := qgen.Builder.SimpleInsert("replies", "tid, content, parsed_content, createdAt, lastUpdated, ipaddress, words, createdBy", "?,?,?,UTC_TIMESTAMP(),UTC_TIMESTAMP(),?,?,?")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &SQLReplyStore{
|
|
||||||
get: getReplyStmt,
|
|
||||||
create: createReplyStmt,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (store *SQLReplyStore) Get(id int) (*Reply, error) {
|
|
||||||
reply := Reply{ID: id}
|
|
||||||
err := store.get.QueryRow(id).Scan(&reply.ParentID, &reply.Content, &reply.CreatedBy, &reply.CreatedAt, &reply.LastEdit, &reply.LastEditBy, &reply.IPAddress, &reply.LikeCount)
|
|
||||||
return &reply, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Write a test for this
|
|
||||||
func (store *SQLReplyStore) Create(tid int, content string, ipaddress string, fid int, uid int) (id int, err error) {
|
|
||||||
wcount := wordCount(content)
|
|
||||||
res, err := store.create.Exec(tid, content, parseMessage(content, fid, "forums"), ipaddress, wcount, uid)
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
lastID, err := res.LastInsertId()
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = stmts.addRepliesToTopic.Exec(1, uid, tid)
|
|
||||||
if err != nil {
|
|
||||||
return int(lastID), err
|
|
||||||
}
|
|
||||||
tcache, ok := topics.(TopicCache)
|
|
||||||
if ok {
|
|
||||||
tcache.CacheRemove(tid)
|
|
||||||
}
|
|
||||||
return int(lastID), err
|
|
||||||
}
|
|
||||||
|
|
||||||
type ProfileReplyStore interface {
|
|
||||||
Get(id int) (*Reply, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Refactor this to stop using the global stmt store
|
|
||||||
// TODO: Add more methods to this like Create()
|
|
||||||
type SQLProfileReplyStore struct {
|
|
||||||
get *sql.Stmt
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSQLProfileReplyStore() (*SQLProfileReplyStore, error) {
|
|
||||||
getUserReplyStmt, err := qgen.Builder.SimpleSelect("users_replies", "uid, content, createdBy, createdAt, lastEdit, lastEditBy, ipaddress", "rid = ?", "", "")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &SQLProfileReplyStore{
|
|
||||||
get: getUserReplyStmt,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (store *SQLProfileReplyStore) Get(id int) (*Reply, error) {
|
|
||||||
reply := Reply{ID: id}
|
|
||||||
err := store.get.QueryRow(id).Scan(&reply.ParentID, &reply.Content, &reply.CreatedBy, &reply.CreatedAt, &reply.LastEdit, &reply.LastEditBy, &reply.IPAddress)
|
|
||||||
return &reply, err
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "database/sql"
|
||||||
|
import "./query_gen/lib"
|
||||||
|
|
||||||
|
var rstore ReplyStore
|
||||||
|
|
||||||
|
type ReplyStore interface {
|
||||||
|
Get(id int) (*Reply, error)
|
||||||
|
Create(tid int, content string, ipaddress string, fid int, uid int) (id int, err error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type SQLReplyStore struct {
|
||||||
|
get *sql.Stmt
|
||||||
|
create *sql.Stmt
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSQLReplyStore() (*SQLReplyStore, error) {
|
||||||
|
getReplyStmt, err := qgen.Builder.SimpleSelect("replies", "tid, content, createdBy, createdAt, lastEdit, lastEditBy, ipaddress, likeCount", "rid = ?", "", "")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
createReplyStmt, err := qgen.Builder.SimpleInsert("replies", "tid, content, parsed_content, createdAt, lastUpdated, ipaddress, words, createdBy", "?,?,?,UTC_TIMESTAMP(),UTC_TIMESTAMP(),?,?,?")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &SQLReplyStore{
|
||||||
|
get: getReplyStmt,
|
||||||
|
create: createReplyStmt,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store *SQLReplyStore) Get(id int) (*Reply, error) {
|
||||||
|
reply := Reply{ID: id}
|
||||||
|
err := store.get.QueryRow(id).Scan(&reply.ParentID, &reply.Content, &reply.CreatedBy, &reply.CreatedAt, &reply.LastEdit, &reply.LastEditBy, &reply.IPAddress, &reply.LikeCount)
|
||||||
|
return &reply, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Write a test for this
|
||||||
|
func (store *SQLReplyStore) Create(tid int, content string, ipaddress string, fid int, uid int) (id int, err error) {
|
||||||
|
wcount := wordCount(content)
|
||||||
|
res, err := store.create.Exec(tid, content, parseMessage(content, fid, "forums"), ipaddress, wcount, uid)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
lastID, err := res.LastInsertId()
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = stmts.addRepliesToTopic.Exec(1, uid, tid)
|
||||||
|
if err != nil {
|
||||||
|
return int(lastID), err
|
||||||
|
}
|
||||||
|
tcache, ok := topics.(TopicCache)
|
||||||
|
if ok {
|
||||||
|
tcache.CacheRemove(tid)
|
||||||
|
}
|
||||||
|
return int(lastID), err
|
||||||
|
}
|
Loading…
Reference in New Issue