This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user