1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-13 09:26:23 -07:00

replace hacky interfaceSlice function in gcsql with []any{...}

This commit is contained in:
Eggbertx 2024-05-24 14:19:50 -07:00
parent 48fc697f8e
commit 692602402c
11 changed files with 59 additions and 83 deletions

View file

@ -74,11 +74,11 @@ func CheckIPBan(ip string, boardID int) (*IPBan, error) {
(expires_at > CURRENT_TIMESTAMP OR permanent)
ORDER BY id DESC LIMIT 1`
var ban IPBan
err := QueryRowSQL(query, interfaceSlice(ip, ip, boardID), interfaceSlice(
err := QueryRowSQL(query, []any{ip, ip, boardID}, []any{
&ban.ID, &ban.StaffID, &ban.BoardID, &ban.BannedForPostID, &ban.CopyPostText,
&ban.IsThreadBan, &ban.IsActive, &ban.RangeStart, &ban.RangeEnd, &ban.IssuedAt,
&ban.AppealAt, &ban.ExpiresAt, &ban.Permanent, &ban.StaffNote, &ban.Message,
&ban.CanAppeal))
&ban.CanAppeal})
if errors.Is(err, sql.ErrNoRows) {
return nil, nil
} else if err != nil {
@ -90,11 +90,11 @@ func CheckIPBan(ip string, boardID int) (*IPBan, error) {
func GetIPBanByID(id int) (*IPBan, error) {
const query = ipBanQueryBase + " WHERE id = ?"
var ban IPBan
err := QueryRowSQL(query, interfaceSlice(id), interfaceSlice(
err := QueryRowSQL(query, []any{id}, []any{
&ban.ID, &ban.StaffID, &ban.BoardID, &ban.BannedForPostID, &ban.CopyPostText,
&ban.IsThreadBan, &ban.IsActive, &ban.RangeStart, &ban.RangeEnd, &ban.IssuedAt,
&ban.AppealAt, &ban.ExpiresAt, &ban.Permanent, &ban.StaffNote, &ban.Message,
&ban.CanAppeal))
&ban.CanAppeal})
if err != nil {
return nil, err
}
@ -428,9 +428,9 @@ func CheckFileChecksumBan(checksum string, boardID int) (*FileBan, error) {
FROM DBPREFIXfile_ban
WHERE checksum = ? AND (board_id IS NULL OR board_id = ?) ORDER BY id DESC LIMIT 1`
var ban FileBan
err := QueryRowSQL(query, interfaceSlice(checksum, boardID), interfaceSlice(
err := QueryRowSQL(query, []any{checksum, boardID}, []any{
&ban.ID, &ban.BoardID, &ban.StaffID, &ban.StaffNote, &ban.IssuedAt, &ban.Checksum,
))
})
if err == sql.ErrNoRows {
return nil, nil
}

View file

@ -39,7 +39,7 @@ var (
func DoesBoardExistByID(ID int) bool {
const query = `SELECT COUNT(id) FROM DBPREFIXboards WHERE id = ?`
var count int
QueryRowSQL(query, interfaceSlice(ID), interfaceSlice(&count))
QueryRowSQL(query, []any{ID}, []any{&count})
return count > 0
}
@ -47,7 +47,7 @@ func DoesBoardExistByID(ID int) bool {
func DoesBoardExistByDir(dir string) bool {
const query = `SELECT COUNT(dir) FROM DBPREFIXboards WHERE dir = ?`
var count int
QueryRowSQL(query, interfaceSlice(dir), interfaceSlice(&count))
QueryRowSQL(query, []any{dir}, []any{&count})
return count > 0
}
@ -86,7 +86,7 @@ func GetAllBoards(onlyNonHidden bool) ([]Board, error) {
func GetBoardDir(id int) (string, error) {
const query = `SELECT dir FROM DBPREFIXboards WHERE id = ?`
var dir string
err := QueryRowSQL(query, interfaceSlice(id), interfaceSlice(&dir))
err := QueryRowSQL(query, []any{id}, []any{&dir})
return dir, err
}
@ -99,7 +99,7 @@ func GetBoardDirFromPostID(postID int) (string, error) {
WHERE posts.id = ?
) as threads ON threads.board_id = board.id`
var boardURI string
err := QueryRowSQL(query, interfaceSlice(postID), interfaceSlice(&boardURI))
err := QueryRowSQL(query, []any{postID}, []any{&boardURI})
if errors.Is(err, sql.ErrNoRows) {
err = ErrBoardDoesNotExist
}
@ -109,13 +109,12 @@ func GetBoardDirFromPostID(postID int) (string, error) {
func getBoardBase(where string, whereParameters []interface{}) (*Board, error) {
query := selectBoardsBaseSQL + where
board := new(Board)
err := QueryRowSQL(query, whereParameters, interfaceSlice(
err := QueryRowSQL(query, whereParameters, []any{
&board.ID, &board.SectionID, &board.URI, &board.Dir, &board.NavbarPosition, &board.Title, &board.Subtitle,
&board.Description, &board.MaxFilesize, &board.MaxThreads, &board.DefaultStyle, &board.Locked,
&board.CreatedAt, &board.AnonymousName, &board.ForceAnonymous, &board.AutosageAfter, &board.NoImagesAfter,
&board.MaxMessageLength, &board.MinMessageLength, &board.AllowEmbeds, &board.RedirectToThread, &board.RequireFile,
&board.EnableCatalog,
))
&board.EnableCatalog})
if errors.Is(err, sql.ErrNoRows) {
return nil, ErrBoardDoesNotExist
}
@ -124,18 +123,18 @@ func getBoardBase(where string, whereParameters []interface{}) (*Board, error) {
// GetBoardFromID returns the board corresponding to a given id
func GetBoardFromID(id int) (*Board, error) {
return getBoardBase("WHERE DBPREFIXboards.id = ?", interfaceSlice(id))
return getBoardBase("WHERE DBPREFIXboards.id = ?", []any{id})
}
// GetBoardFromDir returns the board corresponding to a given dir
func GetBoardFromDir(dir string) (*Board, error) {
return getBoardBase("WHERE DBPREFIXboards.dir = ?", interfaceSlice(dir))
return getBoardBase("WHERE DBPREFIXboards.dir = ?", []any{dir})
}
// GetIDFromDir returns the id of the board with the given dir value
func GetBoardIDFromDir(dir string) (id int, err error) {
const query = `SELECT id FROM DBPREFIXboards WHERE dir = ?`
err = QueryRowSQL(query, interfaceSlice(dir), interfaceSlice(&id))
err = QueryRowSQL(query, []any{dir}, []any{&id})
if errors.Is(err, sql.ErrNoRows) {
return 0, ErrBoardDoesNotExist
}
@ -259,10 +258,7 @@ func CreateBoard(board *Board, appendToAllBoards bool) error {
if err != nil {
return err
}
if err = QueryRowSQL(
`SELECT id FROM DBPREFIXboards WHERE dir = ?`,
interfaceSlice(board.Dir), interfaceSlice(&board.ID),
); err != nil {
if err = QueryRowSQL(`SELECT id FROM DBPREFIXboards WHERE dir = ?`, []any{board.Dir}, []any{&board.ID}); err != nil {
return err
}
board.CreatedAt = time.Now()
@ -276,7 +272,7 @@ func CreateBoard(board *Board, appendToAllBoards bool) error {
func createDefaultBoardIfNoneExist() error {
const query = `SELECT COUNT(id) FROM DBPREFIXboards`
var count int
QueryRowSQL(query, interfaceSlice(), interfaceSlice(&count))
QueryRowSQL(query, nil, []any{&count})
if count > 0 {
return nil
}
@ -289,7 +285,7 @@ func createDefaultBoardIfNoneExist() error {
func getBoardIDFromURI(uri string) (int, error) {
const sql = `SELECT id FROM DBPREFIXboards WHERE uri = ?`
var id int
err := QueryRowSQL(sql, interfaceSlice(uri), interfaceSlice(&id))
err := QueryRowSQL(sql, []any{uri}, []any{&id})
return id, err
}

View file

@ -34,21 +34,6 @@ func setupSQLConfig(dbDriver string, dbName string, dbPrefix string) *config.SQL
}
}
func initMock(t *testing.T, dbDriver string) (sqlmock.Sqlmock, error) {
t.Helper()
err := Close()
assert.NoError(t, err)
gcdb, err = setupDBConn(setupSQLConfig(dbDriver, "gochan", ""))
if !assert.NoError(t, err) {
return nil, err
}
var mock sqlmock.Sqlmock
gcdb.db, mock, err = sqlmock.New()
return mock, err
}
func TestOpenMySQL(t *testing.T) {
var err error
gcdb, err = setupDBConn(setupSQLConfig("mysql", "gochan", ""))

View file

@ -38,12 +38,12 @@ func GetPostFromID(id int, onlyNotDeleted bool) (*Post, error) {
query += " AND is_deleted = FALSE"
}
post := new(Post)
err := QueryRowSQL(query, interfaceSlice(id), interfaceSlice(
err := QueryRowSQL(query, []any{id}, []any{
&post.ID, &post.ThreadID, &post.IsTopPost, &post.IP, &post.CreatedOn, &post.Name,
&post.Tripcode, &post.IsRoleSignature, &post.Email, &post.Subject, &post.Message,
&post.MessageRaw, &post.Password, &post.DeletedAt, &post.IsDeleted,
&post.BannedMessage, &post.Flag, &post.Country,
))
})
if err == sql.ErrNoRows {
return nil, ErrPostDoesNotExist
@ -93,7 +93,7 @@ func GetTopPostInThread(postID int) (int, error) {
SELECT thread_id FROM DBPREFIXposts WHERE id = ?
) AND is_top_post = TRUE ORDER BY id ASC LIMIT 1`
var id int
err := QueryRowSQL(query, interfaceSlice(postID), interfaceSlice(&id))
err := QueryRowSQL(query, []any{postID}, []any{&id})
return id, err
}
@ -126,12 +126,12 @@ func GetTopPostIDsInThreadIDs(threads ...interface{}) (map[interface{}]int, erro
func GetThreadTopPost(threadID int) (*Post, error) {
const query = selectPostsBaseSQL + "WHERE thread_id = ? AND is_top_post = TRUE LIMIT 1"
post := new(Post)
err := QueryRowSQL(query, interfaceSlice(threadID), interfaceSlice(
err := QueryRowSQL(query, []any{threadID}, []any{
&post.ID, &post.ThreadID, &post.IsTopPost, &post.IP, &post.CreatedOn, &post.Name,
&post.Tripcode, &post.IsRoleSignature, &post.Email, &post.Subject, &post.Message,
&post.MessageRaw, &post.Password, &post.DeletedAt, &post.IsDeleted,
&post.BannedMessage, &post.Flag, &post.Country,
))
})
return post, err
}
@ -176,7 +176,7 @@ func GetBoardTopPosts(boardID int) ([]*Post, error) {
func GetPostPassword(id int) (string, error) {
const query = `SELECT password FROM DBPREFIXposts WHERE id = ?`
var passwordChecksum string
err := QueryRowSQL(query, interfaceSlice(id), interfaceSlice(&passwordChecksum))
err := QueryRowSQL(query, []any{id}, []any{&passwordChecksum})
return passwordChecksum, err
}
@ -197,7 +197,7 @@ func PermanentlyRemoveDeletedPosts() error {
func SinceLastPost(postIP string) (int, error) {
const query = `SELECT COALESCE(MAX(created_on), '1970-01-01 00:00:00') FROM DBPREFIXposts WHERE ip = ?`
var whenStr string
err := QueryRowSQL(query, interfaceSlice(postIP), interfaceSlice(&whenStr))
err := QueryRowSQL(query, []any{postIP}, []any{&whenStr})
if err != nil {
return -1, err
}
@ -215,7 +215,7 @@ func SinceLastThread(postIP string) (int, error) {
const query = `SELECT COALESCE(MAX(created_on), '1970-01-01 00:00:00') FROM DBPREFIXposts WHERE ip = ? AND is_top_post`
var whenStr string
err := QueryRowSQL(query, interfaceSlice(postIP), interfaceSlice(&whenStr))
err := QueryRowSQL(query, []any{postIP}, []any{&whenStr})
if err != nil {
return -1, err
}
@ -243,7 +243,7 @@ func (p *Post) UpdateContents(email string, subject string, message template.HTM
func (p *Post) GetBoardID() (int, error) {
const query = `SELECT board_id FROM DBPREFIXthreads where id = ?`
var boardID int
err := QueryRowSQL(query, interfaceSlice(p.ThreadID), interfaceSlice(&boardID))
err := QueryRowSQL(query, []any{p.ThreadID}, []any{&boardID})
if errors.Is(err, sql.ErrNoRows) {
err = ErrBoardDoesNotExist
}
@ -253,20 +253,20 @@ func (p *Post) GetBoardID() (int, error) {
func (p *Post) GetBoardDir() (string, error) {
const query = "SELECT dir FROM DBPREFIXboards" + boardFromPostIdSuffixSQL
var dir string
err := QueryRowSQL(query, interfaceSlice(p.ID), interfaceSlice(&dir))
err := QueryRowSQL(query, []any{p.ID}, []any{&dir})
return dir, err
}
func (p *Post) GetBoard() (*Board, error) {
const query = selectBoardsBaseSQL + boardFromPostIdSuffixSQL
board := new(Board)
err := QueryRowSQL(query, interfaceSlice(p.ID), interfaceSlice(
err := QueryRowSQL(query, []any{p.ID}, []any{
&board.ID, &board.SectionID, &board.URI, &board.Dir, &board.NavbarPosition, &board.Title, &board.Subtitle,
&board.Description, &board.MaxFilesize, &board.MaxThreads, &board.DefaultStyle, &board.Locked,
&board.CreatedAt, &board.AnonymousName, &board.ForceAnonymous, &board.AutosageAfter, &board.NoImagesAfter,
&board.MaxMessageLength, &board.MinMessageLength, &board.AllowEmbeds, &board.RedirectToThread, &board.RequireFile,
&board.EnableCatalog,
))
})
return board, err
}
@ -286,7 +286,7 @@ func (p *Post) TopPostID() (int, error) {
}
const query = `SELECT id FROM DBPREFIXposts WHERE thread_id = ? and is_top_post = TRUE ORDER BY id ASC LIMIT 1`
var topPostID int
err := QueryRowSQL(query, interfaceSlice(p.ThreadID), interfaceSlice(&topPostID))
err := QueryRowSQL(query, []any{p.ThreadID}, []any{&topPostID})
return topPostID, err
}
@ -308,10 +308,10 @@ func (p *Post) GetUpload() (*Upload, error) {
file_size, is_spoilered, thumbnail_width, thumbnail_height, width, height
FROM DBPREFIXfiles WHERE post_id = ?`
upload := new(Upload)
err := QueryRowSQL(query, interfaceSlice(p.ID), interfaceSlice(
err := QueryRowSQL(query, []any{p.ID}, []any{
&upload.ID, &upload.PostID, &upload.FileOrder, &upload.OriginalFilename, &upload.Filename, &upload.Checksum,
&upload.FileSize, &upload.IsSpoilered, &upload.ThumbnailWidth, &upload.ThumbnailHeight, &upload.Width, &upload.Height,
))
})
if errors.Is(err, sql.ErrNoRows) {
return nil, nil
}
@ -372,7 +372,7 @@ func (p *Post) Insert(bumpThread bool, boardID int, locked bool, stickied bool,
} else {
var threadIsLocked bool
if err = QueryRowTxSQL(tx, "SELECT locked FROM DBPREFIXthreads WHERE id = ?",
interfaceSlice(p.ThreadID), interfaceSlice(&threadIsLocked)); err != nil {
[]any{p.ThreadID}, []any{&threadIsLocked}); err != nil {
return err
}
if threadIsLocked {
@ -420,7 +420,7 @@ func (p *Post) WebPath() string {
SELECT id, thread_id FROM DBPREFIXposts WHERE is_top_post
) op on op.thread_id = DBPREFIXposts.thread_id
WHERE DBPREFIXposts.id = ?`
err := QueryRowSQL(query, interfaceSlice(p.ID), interfaceSlice(&opID, &boardDir))
err := QueryRowSQL(query, []any{p.ID}, []any{&opID, &boardDir})
if err != nil {
return webRoot
}

View file

@ -59,7 +59,7 @@ func CheckPostReports(postID int, reason string) (bool, bool, error) {
WHERE post_id = ? AND (reason = ? OR is_cleared = 2)`
var num int
var isCleared interface{}
err := QueryRowSQL(sql, interfaceSlice(postID, reason), interfaceSlice(&num, &isCleared))
err := QueryRowSQL(sql, []any{postID, reason}, []any{&num, &isCleared})
isClearedInt, _ := isCleared.(int64)
return num > 0, isClearedInt == 2, err
}

View file

@ -43,7 +43,7 @@ func GetAllSections(onlyNonHidden bool) ([]Section, error) {
func getOrCreateDefaultSectionID() (sectionID int, err error) {
const query = `SELECT id FROM DBPREFIXsections WHERE name = 'Main'`
var id int
err = QueryRowSQL(query, interfaceSlice(), interfaceSlice(&id))
err = QueryRowSQL(query, nil, []any{&id})
if errors.Is(err, sql.ErrNoRows) {
var section *Section
if section, err = NewSection("Main", "main", false, -1); err != nil {
@ -60,9 +60,9 @@ func getOrCreateDefaultSectionID() (sectionID int, err error) {
func GetSectionFromID(id int) (*Section, error) {
const query = `SELECT id, name, abbreviation, position, hidden FROM DBPREFIXsections WHERE id = ?`
var section Section
err := QueryRowSQL(query, interfaceSlice(id), interfaceSlice(
err := QueryRowSQL(query, []any{id}, []any{
&section.ID, &section.Name, &section.Abbreviation, &section.Position, &section.Hidden,
))
})
if err != nil {
return nil, err
}

View file

@ -18,7 +18,7 @@ var (
func createDefaultAdminIfNoStaff() error {
const query = `SELECT COUNT(id) FROM DBPREFIXstaff`
var count int
err := QueryRowSQL(query, interfaceSlice(), interfaceSlice(&count))
err := QueryRowSQL(query, nil, []any{&count})
if err != nil && !errors.Is(err, sql.ErrNoRows) {
return err
}
@ -67,7 +67,7 @@ func (s *Staff) ClearSessions() error {
var err error
if s.ID == 0 {
// ID field not set, get it from the DB
if err = QueryRowSQL(query, interfaceSlice(s.Username), interfaceSlice(&s.ID)); err != nil {
if err = QueryRowSQL(query, []any{s.Username}, []any{&s.ID}); err != nil {
return err
}
}
@ -128,7 +128,7 @@ func DeactivateStaff(username string) error {
func GetStaffUsernameFromID(id int) (string, error) {
const query = `SELECT username FROM DBPREFIXstaff WHERE id = ?`
var username string
err := QueryRowSQL(query, interfaceSlice(id), interfaceSlice(&username))
err := QueryRowSQL(query, []any{id}, []any{&username})
return username, err
}
@ -153,8 +153,8 @@ func GetStaffBySession(session string) (*Staff, error) {
ON sessions.staff_id = staff.id
WHERE sessions.data = ?`
staff := new(Staff)
err := QueryRowSQL(query, interfaceSlice(session), interfaceSlice(
&staff.ID, &staff.Username, &staff.PasswordChecksum, &staff.Rank, &staff.AddedOn, &staff.LastLogin))
err := QueryRowSQL(query, []any{session}, []any{
&staff.ID, &staff.Username, &staff.PasswordChecksum, &staff.Rank, &staff.AddedOn, &staff.LastLogin})
return staff, err
}
@ -166,10 +166,10 @@ func GetStaffByUsername(username string, onlyActive bool) (*Staff, error) {
query += ` AND is_active = TRUE`
}
staff := new(Staff)
err := QueryRowSQL(query, interfaceSlice(username), interfaceSlice(
err := QueryRowSQL(query, []any{username}, []any{
&staff.ID, &staff.Username, &staff.PasswordChecksum, &staff.Rank, &staff.AddedOn,
&staff.LastLogin, &staff.IsActive,
))
})
if errors.Is(err, sql.ErrNoRows) {
return nil, ErrUnrecognizedUsername
}

View file

@ -23,7 +23,7 @@ func createThread(tx *sql.Tx, boardID int, locked bool, stickied bool, anchored
const lockedQuery = `SELECT locked FROM DBPREFIXboards WHERE id = ?`
const insertQuery = `INSERT INTO DBPREFIXthreads (board_id, locked, stickied, anchored, cyclical) VALUES (?,?,?,?,?)`
var boardIsLocked bool
if err = QueryRowTxSQL(tx, lockedQuery, interfaceSlice(boardID), interfaceSlice(&boardIsLocked)); err != nil {
if err = QueryRowTxSQL(tx, lockedQuery, []any{boardID}, []any{&boardIsLocked}); err != nil {
return 0, err
}
if boardIsLocked {
@ -32,7 +32,7 @@ func createThread(tx *sql.Tx, boardID int, locked bool, stickied bool, anchored
if _, err = ExecTxSQL(tx, insertQuery, boardID, locked, stickied, anchored, cyclical); err != nil {
return 0, err
}
QueryRowTxSQL(tx, "SELECT MAX(id) FROM DBPREFIXthreads", nil, interfaceSlice(&threadID))
QueryRowTxSQL(tx, "SELECT MAX(id) FROM DBPREFIXthreads", nil, []any{&threadID})
return threadID, err
}
@ -40,10 +40,10 @@ func createThread(tx *sql.Tx, boardID int, locked bool, stickied bool, anchored
func GetThread(threadID int) (*Thread, error) {
const query = selectThreadsBaseSQL + `WHERE id = ?`
thread := new(Thread)
err := QueryRowSQL(query, interfaceSlice(threadID), interfaceSlice(
err := QueryRowSQL(query, []any{threadID}, []any{
&thread.ID, &thread.BoardID, &thread.Locked, &thread.Stickied, &thread.Anchored, &thread.Cyclical,
&thread.LastBump, &thread.DeletedAt, &thread.IsDeleted,
))
})
return thread, err
}
@ -51,10 +51,10 @@ func GetThread(threadID int) (*Thread, error) {
func GetPostThread(opID int) (*Thread, error) {
const query = selectThreadsBaseSQL + `WHERE id = (SELECT thread_id FROM DBPREFIXposts WHERE id = ? LIMIT 1)`
thread := new(Thread)
err := QueryRowSQL(query, interfaceSlice(opID), interfaceSlice(
err := QueryRowSQL(query, []any{opID}, []any{
&thread.ID, &thread.BoardID, &thread.Locked, &thread.Stickied, &thread.Anchored, &thread.Cyclical,
&thread.LastBump, &thread.DeletedAt, &thread.IsDeleted,
))
})
if errors.Is(err, sql.ErrNoRows) {
err = ErrThreadDoesNotExist
}
@ -65,7 +65,7 @@ func GetPostThread(opID int) (*Thread, error) {
func GetTopPostThreadID(opID int) (int, error) {
const query = `SELECT thread_id FROM DBPREFIXposts WHERE id = ? and is_top_post`
var threadID int
err := QueryRowSQL(query, interfaceSlice(opID), interfaceSlice(&threadID))
err := QueryRowSQL(query, []any{opID}, []any{&threadID})
if err == sql.ErrNoRows {
err = ErrThreadDoesNotExist
}
@ -103,7 +103,7 @@ func GetThreadReplyCountFromOP(opID int) (int, error) {
const query = `SELECT COUNT(*) FROM DBPREFIXposts WHERE thread_id = (
SELECT thread_id FROM DBPREFIXposts WHERE id = ?) AND is_deleted = FALSE AND is_top_post = FALSE`
var num int
err := QueryRowSQL(query, interfaceSlice(opID), interfaceSlice(&num))
err := QueryRowSQL(query, []any{opID}, []any{&num})
return num, err
}
@ -134,7 +134,7 @@ func (t *Thread) GetReplyFileCount() (int, error) {
const query = `SELECT COUNT(filename) FROM DBPREFIXfiles WHERE post_id IN (
SELECT id FROM DBPREFIXposts WHERE thread_id = ? AND is_deleted = FALSE)`
var fileCount int
err := QueryRowSQL(query, interfaceSlice(t.ID), interfaceSlice(&fileCount))
err := QueryRowSQL(query, []any{t.ID}, []any{&fileCount})
return fileCount, err
}
@ -142,7 +142,7 @@ func (t *Thread) GetReplyFileCount() (int, error) {
func (t *Thread) GetReplyCount() (int, error) {
const query = `SELECT COUNT(*) FROM DBPREFIXposts WHERE thread_id = ? AND is_top_post = FALSE AND is_deleted = FALSE`
var numReplies int
err := QueryRowSQL(query, interfaceSlice(t.ID), interfaceSlice(&numReplies))
err := QueryRowSQL(query, []any{t.ID}, []any{&numReplies})
return numReplies, err
}

View file

@ -43,7 +43,7 @@ func GetThreadFiles(post *Post) ([]Upload, error) {
func (p *Post) nextFileOrder() (int, error) {
const query = `SELECT COALESCE(MAX(file_order) + 1, 0) FROM DBPREFIXfiles WHERE post_id = ?`
var next int
err := QueryRowSQL(query, interfaceSlice(p.ID), interfaceSlice(&next))
err := QueryRowSQL(query, []any{p.ID}, []any{&next})
return next, err
}

View file

@ -296,7 +296,7 @@ func getLatestID(tableName string, tx *sql.Tx) (id int, err error) {
}
err = stmt.QueryRow().Scan(&id)
} else {
err = QueryRowSQL(query, nil, interfaceSlice(&id))
err = QueryRowSQL(query, nil, []any{&id})
}
return
}
@ -359,11 +359,6 @@ func doesGochanPrefixTableExist() (bool, error) {
return count > 0, nil
}
// interfaceSlice creates a new interface slice from an arbitrary collection of values
func interfaceSlice(args ...any) []any {
return args
}
/* func errFilterDuplicatePrimaryKey(err error) (isPKerror bool, nonPKerror error) {
if err == nil {
return false, nil

View file

@ -75,7 +75,7 @@ func tcPrepareContextSQL(t *testing.T, mock sqlmock.Sqlmock, tC *testCase[prepar
}
func TestPrepareContextSQL(t *testing.T) {
_, err := PrepareContextSQL(nil, "", nil)
_, err := PrepareContextSQL(context.Background(), "", nil)
if !assert.Error(t, err) {
return
}