feat(backend): implement REST API for races calendar

Express + TypeScript backend with PostgreSQL: CRUD endpoints for /races (GET list with year/month filters, GET by id, POST, PATCH, DELETE), health/readiness probes, SQL migration runner, seed script with upsert from CSV, camelCase/snake_case mapper, CORS, env validation, docker-compose, and API docs for frontend.

Made-with: Cursor
This commit is contained in:
Anton
2026-04-01 14:47:53 +03:00
parent 88a448dd8e
commit 698ae37553
17 changed files with 2242 additions and 0 deletions

29
backend/src/db.ts Normal file
View File

@@ -0,0 +1,29 @@
import { Pool, PoolConfig } from "pg";
import { config } from "./config";
const poolConfig: PoolConfig = {
host: config.db.host,
port: config.db.port,
database: config.db.database,
user: config.db.user,
password: config.db.password,
max: 10,
idleTimeoutMillis: 30_000,
connectionTimeoutMillis: 5_000,
};
export const pool = new Pool(poolConfig);
pool.on("error", (err) => {
console.error("[db] Unexpected pool error:", err.message);
});
export async function checkDbConnection(): Promise<boolean> {
try {
const client = await pool.connect();
client.release();
return true;
} catch {
return false;
}
}