mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
- migrations/postgres/: consolidated pg schema with tsvector FTS, CITEXT usernames, native CHECK constraints, native BOOLEAN/TIMESTAMPTZ types - db/queries/postgres/: 14 sqlc query files dialect-translated from sqlite ($N placeholders, NOW(), TRUE/FALSE, ON CONFLICT DO UPDATE, RETURNING id, :execrows for mutations needing row count) - sqlc.yaml: second engine entry -> pgdbgen package under pgx/v5 - Makefile: sqlc-verify covers both dbgen + pgdbgen - store/postgres.go: PostgresStore behind //go:build postgres, full Store interface (112 methods). Connection lifecycle real; query methods stub ErrPostgresNotImplemented awaiting pgdbgen wrappers - config: DatabaseConfig.Type/Host/Port/User/Password/Name/SSLMode/MaxConns - main.go: explicit dispatch on database.type; postgres errors with clear pointer at remaining work until pgdbgen + boundary refactor land - phase-a-foundation.md: implementation status + actionable TODO checklist including forward-only sqlite->postgres data migration design
16 lines
549 B
SQL
16 lines
549 B
SQL
-- PostgreSQL variants of the sqlite rate-lockout queries.
|
|
-- `INSERT OR REPLACE` becomes `INSERT ... ON CONFLICT (key) DO UPDATE`.
|
|
|
|
-- name: UpsertLockout :exec
|
|
INSERT INTO rate_lockouts (key, expires_at) VALUES ($1, $2)
|
|
ON CONFLICT (key) DO UPDATE SET expires_at = EXCLUDED.expires_at;
|
|
|
|
-- name: LoadActiveLockouts :many
|
|
SELECT key, expires_at FROM rate_lockouts WHERE expires_at > $1;
|
|
|
|
-- name: CleanupExpiredLockouts :exec
|
|
DELETE FROM rate_lockouts WHERE expires_at <= $1;
|
|
|
|
-- name: DeleteLockout :exec
|
|
DELETE FROM rate_lockouts WHERE key = $1;
|