Production ready

This commit is contained in:
2026-02-09 22:31:22 +01:00
parent fd6e7c44e1
commit 7814548e11
82 changed files with 3390 additions and 2026 deletions

View File

@@ -53,11 +53,13 @@ export const query = async <T extends QueryResultRow = any>(
return result;
};
export const getClient = () => pool.connect();
// User queries
export const db = {
users: {
export const getClient = () => pool.connect();
// User queries
export const db = {
query,
users: {
async create(email: string, passwordHash: string): Promise<User> {
const result = await query(
'INSERT INTO users (email, password_hash) VALUES ($1, $2) RETURNING *',
@@ -455,12 +457,12 @@ export const db = {
return toCamelCase<any>(result.rows[0]);
},
async findLatestByMonitorId(monitorId: string, limit = 50): Promise<any[]> {
// Gets the latest check per keyword for this monitor
// Using DISTINCT ON is efficient in Postgres
const result = await query(
`SELECT DISTINCT ON (keyword) *
FROM monitor_rankings
async findLatestByMonitorId(monitorId: string): Promise<any[]> {
// Gets the latest check per keyword for this monitor
// Using DISTINCT ON is efficient in Postgres
const result = await query(
`SELECT DISTINCT ON (keyword) *
FROM monitor_rankings
WHERE monitor_id = $1
ORDER BY keyword, created_at DESC`,
[monitorId]

View File

@@ -1 +1 @@
/c/Users/timo/Documents/Websites/website-monitor/backend/src/db/migrations
/c/Users/timo/Documents/Websites/website-monitor/backend/src/db/migrations