seo and meta routes
Build and Push Docker Images / build-and-push (push) Successful in 18s

This commit is contained in:
2025-11-20 14:52:41 +01:00
parent c8f41768f7
commit 8ef3848f6f
3 changed files with 419 additions and 68 deletions
+84
View File
@@ -186,6 +186,29 @@ const dbOps = {
}
},
async getCachedSeo(url, now) {
const seoKey = `seo:${url}`;
if (dbType === 'postgres') {
const client = await pgPool.connect();
try {
const result = await client.query(
'SELECT html FROM cache WHERE url = $1 AND expires_at > $2',
[seoKey, now]
);
if (result.rows.length > 0) {
return JSON.parse(result.rows[0].html);
}
return null;
} finally {
client.release();
}
} else {
const getCached = db.prepare('SELECT html FROM cache WHERE url = ? AND expires_at > ?');
const result = getCached.get(seoKey, now);
return result ? JSON.parse(result.html) : null;
}
},
async setCache(url, html, now, expiresAt) {
if (dbType === 'postgres') {
const client = await pgPool.connect();
@@ -203,6 +226,67 @@ const dbOps = {
}
},
async setCacheSeo(url, seoData, now, expiresAt) {
const seoKey = `seo:${url}`;
const html = JSON.stringify(seoData);
if (dbType === 'postgres') {
const client = await pgPool.connect();
try {
await client.query(
'INSERT INTO cache (url, html, created_at, expires_at) VALUES ($1, $2, $3, $4) ON CONFLICT (url) DO UPDATE SET html = $2, created_at = $3, expires_at = $4',
[seoKey, html, now, expiresAt]
);
} finally {
client.release();
}
} else {
const setCache = db.prepare('INSERT OR REPLACE INTO cache (url, html, created_at, expires_at) VALUES (?, ?, ?, ?)');
setCache.run(seoKey, html, now, expiresAt);
}
},
async getCachedMeta(url, now) {
const metaKey = `meta:${url}`;
if (dbType === 'postgres') {
const client = await pgPool.connect();
try {
const result = await client.query(
'SELECT html FROM cache WHERE url = $1 AND expires_at > $2',
[metaKey, now]
);
if (result.rows.length > 0) {
return JSON.parse(result.rows[0].html);
}
return null;
} finally {
client.release();
}
} else {
const getCached = db.prepare('SELECT html FROM cache WHERE url = ? AND expires_at > ?');
const result = getCached.get(metaKey, now);
return result ? JSON.parse(result.html) : null;
}
},
async setCacheMeta(url, metaData, now, expiresAt) {
const metaKey = `meta:${url}`;
const html = JSON.stringify(metaData);
if (dbType === 'postgres') {
const client = await pgPool.connect();
try {
await client.query(
'INSERT INTO cache (url, html, created_at, expires_at) VALUES ($1, $2, $3, $4) ON CONFLICT (url) DO UPDATE SET html = $2, created_at = $3, expires_at = $4',
[metaKey, html, now, expiresAt]
);
} finally {
client.release();
}
} else {
const setCache = db.prepare('INSERT OR REPLACE INTO cache (url, html, created_at, expires_at) VALUES (?, ?, ?, ?)');
setCache.run(metaKey, html, now, expiresAt);
}
},
async deleteExpired(now) {
if (dbType === 'postgres') {
const client = await pgPool.connect();