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

Use contexts with timeout for appeals and wordfilters

This commit is contained in:
Eggbertx 2024-05-30 11:09:24 -07:00
parent f72435ec8d
commit 64724001a1
3 changed files with 26 additions and 24 deletions

View file

@ -1,6 +1,7 @@
package gcsql
import (
"context"
"database/sql"
"strconv"
)
@ -14,12 +15,15 @@ func GetAppeals(banID int, limit int) ([]IPBanAppeal, error) {
if limit > 0 {
query += " LIMIT " + strconv.Itoa(limit)
}
ctx, cancel := context.WithTimeout(context.Background(), gcdb.defaultTimeout)
defer cancel()
var rows *sql.Rows
var err error
if banID > 0 {
rows, err = QuerySQL(query, banID)
rows, err = QueryContextSQL(ctx, nil, query, banID)
} else {
rows, err = QuerySQL(query)
rows, err = QueryContextSQL(ctx, nil, query)
}
if err != nil {
return nil, err
@ -59,13 +63,15 @@ func ApproveAppeal(appealID int, staffID int) error {
return err
}
defer tx.Rollback()
if _, err = ExecTxSQL(tx, deactivateQuery, appealID); err != nil {
ctx, cancel := context.WithTimeout(context.Background(), gcdb.defaultTimeout)
defer cancel()
if _, err = ExecContextSQL(ctx, tx, deactivateQuery, appealID); err != nil {
return err
}
if _, err = ExecTxSQL(tx, deactivateAppealQuery, appealID, staffID); err != nil {
if _, err = ExecContextSQL(ctx, tx, deactivateAppealQuery, appealID, staffID); err != nil {
return err
}
if _, err = ExecTxSQL(tx, deleteAppealQuery, appealID); err != nil {
if _, err = ExecContextSQL(ctx, tx, deleteAppealQuery, appealID); err != nil {
return err
}
return tx.Commit()

View file

@ -95,9 +95,6 @@ func (db *GCDB) PrepareContextSQL(ctx context.Context, query string, tx *sql.Tx)
if prepared, err = SetupSQLString(db.replacer.Replace(query), db); err != nil {
return nil, err
}
if ctx == nil {
ctx = context.Background()
}
_, hasDeadline := ctx.Deadline()
if !hasDeadline {
var cancel context.CancelFunc

View file

@ -1,6 +1,7 @@
package gcsql
import (
"context"
"regexp"
"strings"
"time"
@ -16,13 +17,15 @@ func CreateWordFilter(from string, to string, isRegex bool, boards string, staff
return nil, err
}
}
_, err = ExecSQL(`INSERT INTO DBPREFIXwordfilters
(board_dirs,staff_id,staff_note,search,is_regex,change_to)
VALUES(?,?,?,?,?,?)`, boards, staffID, staffNote, from, isRegex, to)
if err != nil {
const query = `INSERT INTO DBPREFIXwordfilters
(board_dirs,staff_id,staff_note,search,is_regex,change_to)
VALUES(?,?,?,?,?,?)`
ctx, cancel := context.WithTimeout(context.Background(), gcdb.defaultTimeout)
defer cancel()
if _, err = ExecContextSQL(ctx, nil, query, boards, staffID, staffNote, from, isRegex, to); err != nil {
return nil, err
}
boardsPtr := new(string)
*boardsPtr = boards
return &Wordfilter{
@ -40,8 +43,11 @@ func CreateWordFilter(from string, to string, isRegex bool, boards string, staff
// encountered
func GetWordfilters() ([]Wordfilter, error) {
var wfs []Wordfilter
query := `SELECT id,board_dirs,staff_id,staff_note,issued_at,search,is_regex,change_to FROM DBPREFIXwordfilters`
rows, err := QuerySQL(query)
const query = `SELECT id,board_dirs,staff_id,staff_note,issued_at,search,is_regex,change_to FROM DBPREFIXwordfilters`
ctx, cancel := context.WithTimeout(context.Background(), gcdb.defaultTimeout)
defer cancel()
rows, err := QueryContextSQL(ctx, nil, query)
if err != nil {
return wfs, err
}
@ -49,15 +55,8 @@ func GetWordfilters() ([]Wordfilter, error) {
for rows.Next() {
var wf Wordfilter
if err = rows.Scan(
&wf.ID,
&wf.BoardDirs,
&wf.StaffID,
&wf.StaffNote,
&wf.IssuedAt,
&wf.Search,
&wf.IsRegex,
&wf.ChangeTo,
); err != nil {
&wf.ID, &wf.BoardDirs, &wf.StaffID, &wf.StaffNote,
&wf.IssuedAt, &wf.Search, &wf.IsRegex, &wf.ChangeTo); err != nil {
return wfs, err
}
wfs = append(wfs, wf)