aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/db
diff options
context:
space:
mode:
Diffstat (limited to 'backend/db')
-rw-r--r--backend/db/querier.go63
-rw-r--r--backend/db/txmanager.go40
2 files changed, 103 insertions, 0 deletions
diff --git a/backend/db/querier.go b/backend/db/querier.go
new file mode 100644
index 0000000..89d4b55
--- /dev/null
+++ b/backend/db/querier.go
@@ -0,0 +1,63 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.30.0
+
+package db
+
+import (
+ "context"
+)
+
+type Querier interface {
+ AddMainPlayer(ctx context.Context, arg AddMainPlayerParams) error
+ AggregateTestcaseResults(ctx context.Context, submissionID int32) (string, error)
+ CreateGame(ctx context.Context, arg CreateGameParams) (int32, error)
+ CreateProblem(ctx context.Context, arg CreateProblemParams) (int32, error)
+ CreateSession(ctx context.Context, arg CreateSessionParams) error
+ CreateSubmission(ctx context.Context, arg CreateSubmissionParams) (int32, error)
+ CreateTestcase(ctx context.Context, arg CreateTestcaseParams) (int32, error)
+ CreateTestcaseResult(ctx context.Context, arg CreateTestcaseResultParams) error
+ CreateUser(ctx context.Context, username string) (int32, error)
+ CreateUserAuth(ctx context.Context, arg CreateUserAuthParams) error
+ DeleteExpiredSessions(ctx context.Context) error
+ DeleteSession(ctx context.Context, sessionID string) error
+ DeleteTestcase(ctx context.Context, testcaseID int32) error
+ GetGameByID(ctx context.Context, gameID int32) (GetGameByIDRow, error)
+ GetLatestState(ctx context.Context, arg GetLatestStateParams) (GetLatestStateRow, error)
+ GetLatestStatesOfMainPlayers(ctx context.Context, gameID int32) ([]GetLatestStatesOfMainPlayersRow, error)
+ GetProblemByID(ctx context.Context, problemID int32) (Problem, error)
+ GetQualifyingRanking(ctx context.Context, arg GetQualifyingRankingParams) ([]GetQualifyingRankingRow, error)
+ GetRanking(ctx context.Context, gameID int32) ([]GetRankingRow, error)
+ GetSubmissionByID(ctx context.Context, submissionID int32) (Submission, error)
+ GetSubmissionsByGameID(ctx context.Context, gameID int32) ([]Submission, error)
+ GetTestcaseByID(ctx context.Context, testcaseID int32) (Testcase, error)
+ GetTestcaseResultsBySubmissionID(ctx context.Context, submissionID int32) ([]TestcaseResult, error)
+ GetUserAuthByUsername(ctx context.Context, username string) (GetUserAuthByUsernameRow, error)
+ GetUserByID(ctx context.Context, userID int32) (User, error)
+ GetUserBySession(ctx context.Context, sessionID string) (User, error)
+ GetUserIDByUsername(ctx context.Context, username string) (int32, error)
+ ListAllGames(ctx context.Context) ([]Game, error)
+ ListGameStateIDs(ctx context.Context) ([]ListGameStateIDsRow, error)
+ ListMainPlayers(ctx context.Context, dollar_1 []int32) ([]ListMainPlayersRow, error)
+ ListProblems(ctx context.Context) ([]Problem, error)
+ ListPublicGames(ctx context.Context) ([]ListPublicGamesRow, error)
+ ListSubmissionIDs(ctx context.Context) ([]int32, error)
+ ListTestcases(ctx context.Context) ([]Testcase, error)
+ ListTestcasesByGameID(ctx context.Context, gameID int32) ([]Testcase, error)
+ ListTestcasesByProblemID(ctx context.Context, problemID int32) ([]Testcase, error)
+ ListUsers(ctx context.Context) ([]User, error)
+ RemoveAllMainPlayers(ctx context.Context, gameID int32) error
+ SyncGameStateBestScoreSubmission(ctx context.Context, arg SyncGameStateBestScoreSubmissionParams) error
+ UpdateCode(ctx context.Context, arg UpdateCodeParams) error
+ UpdateCodeAndStatus(ctx context.Context, arg UpdateCodeAndStatusParams) error
+ UpdateGame(ctx context.Context, arg UpdateGameParams) error
+ UpdateGameStartedAt(ctx context.Context, arg UpdateGameStartedAtParams) error
+ UpdateGameStateStatus(ctx context.Context, arg UpdateGameStateStatusParams) error
+ UpdateProblem(ctx context.Context, arg UpdateProblemParams) error
+ UpdateSubmissionStatus(ctx context.Context, arg UpdateSubmissionStatusParams) error
+ UpdateTestcase(ctx context.Context, arg UpdateTestcaseParams) error
+ UpdateUser(ctx context.Context, arg UpdateUserParams) error
+ UpdateUserIconPath(ctx context.Context, arg UpdateUserIconPathParams) error
+}
+
+var _ Querier = (*Queries)(nil)
diff --git a/backend/db/txmanager.go b/backend/db/txmanager.go
new file mode 100644
index 0000000..9495288
--- /dev/null
+++ b/backend/db/txmanager.go
@@ -0,0 +1,40 @@
+package db
+
+import (
+ "context"
+ "log/slog"
+
+ "github.com/jackc/pgx/v5"
+ "github.com/jackc/pgx/v5/pgxpool"
+)
+
+type TxManager interface {
+ RunInTx(ctx context.Context, fn func(q Querier) error) error
+}
+
+type PgxTxManager struct {
+ pool *pgxpool.Pool
+ queries *Queries
+}
+
+func NewTxManager(pool *pgxpool.Pool, queries *Queries) *PgxTxManager {
+ return &PgxTxManager{pool: pool, queries: queries}
+}
+
+func (m *PgxTxManager) RunInTx(ctx context.Context, fn func(q Querier) error) error {
+ tx, err := m.pool.Begin(ctx)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err := tx.Rollback(ctx); err != nil && err != pgx.ErrTxClosed {
+ slog.Error("failed to rollback transaction", "error", err)
+ }
+ }()
+
+ qtx := m.queries.WithTx(tx)
+ if err := fn(qtx); err != nil {
+ return err
+ }
+ return tx.Commit(ctx)
+}