UNPKG

@opengis/fastify-table

Version:

core-plugins

66 lines (65 loc) 2.22 kB
import { existsSync, readFileSync } from "node:fs"; import config from "../../../../config.js"; import loadTemplate from "./loadTemplate.js"; import getTemplates from "./getTemplates.js"; import getTemplateSync from "./getTemplateSync.js"; const exists = existsSync("module/cls.json"); const select = {}; const json = exists ? JSON.parse(readFileSync("module/cls.json", "utf-8") || "{}") : {}; function getColumnCLSData(table, name) { const type = select[`${table}.${name}`] || select[name || ""] ? "select" : json[`${table}.${name}`] || json[name || ""] ? "cls" : null; if (!type) return null; // name = table + column or name = column if (!name?.includes(".") && (json[`${table}.${name}`] || json[name || ""])) { const clsName = json[`${table}.${name}`] || json[name || ""]; const result = { name: clsName, type }; if (type === "select") { const data = getTemplateSync("select", clsName); Object.assign(result, { sql: typeof data === "string" ? data : data?.sql, }); } return result; } // name = table return name ? Object.keys(json) .filter((key) => key.startsWith(`${name}.`)) .reduce((acc, curr) => ({ ...acc, [curr.replace(`${name}.`, "")]: json[curr], }), {}) : json; } export default function getColumnCLS(table, name) { // init only if (!Object.keys("select").length) { const cls = getTemplates("cls") .map((el) => el[0]) .reduce((acc, curr) => ({ ...acc, [curr]: curr, }), {}); const selects = getTemplates("select") .map((el) => el[0]) .reduce((acc, curr) => ({ ...acc, [curr]: curr, }), {}); Object.assign(select, selects); Object.assign(json, cls, select); } const key = [name, table, "column-cls"].filter(Boolean).join("-"); if (loadTemplate[key] && !config.local) { return loadTemplate[key]; } loadTemplate[key] = getColumnCLSData(table, name); return loadTemplate[key]; }