Auto-refresh materialised view if necessary

This commit is contained in:
D. Berge
2025-08-07 10:42:08 +02:00
parent a15c97078b
commit 9c86018653

View File

@@ -1,4 +1,5 @@
const { setSurvey } = require('../../connection'); const { setSurvey } = require('../../connection');
const refresh = require('./refresh');
async function get (projectId, opts = {}) { async function get (projectId, opts = {}) {
try { try {
@@ -13,7 +14,11 @@ async function get (projectId, opts = {}) {
client.release(); client.release();
return res.rows[0]; return res.rows[0];
} catch (err) { } catch (err) {
if (err.code == "42P01") { if (err.code == "55000") {
// Materialised view has not been refreshed
await refresh(projectId, opts);
return get(projectId, opts);
} else if (err.code == "42P01") {
throw { status: 404, message: "Not found" }; throw { status: 404, message: "Not found" };
} else { } else {
throw err; throw err;