56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
![]() |
import createDbFromSchema from "@/package-shared/shell/createDbFromSchema";
|
||
|
import grabDirNames from "@/package-shared/utils/backend/names/grab-dir-names";
|
||
|
import debugLog from "@/package-shared/utils/logging/debug-log";
|
||
|
import dbSchemaToType from "@/utils/backend/db-schema-to-type";
|
||
|
import fs from "fs";
|
||
|
|
||
|
function debugLogFn(log: any, label?: string) {
|
||
|
debugLog({ log, addTime: true, label, title: "watchMainDbSchemaJSONFile" });
|
||
|
}
|
||
|
|
||
|
let syncing = 0;
|
||
|
let timeout: any;
|
||
|
|
||
|
const DEBOUNCE = 500;
|
||
|
|
||
|
export default function watchMainDbSchemaJSONFile() {
|
||
|
if (process.env.NODE_ENV?.match(/prod/)) return;
|
||
|
if (process.env.DSQL_HOST_ENV?.match(/prod/)) return;
|
||
|
|
||
|
const { mainShemaJSONFilePath, mainDbTypeDefFile } = grabDirNames();
|
||
|
|
||
|
fs.watch(mainShemaJSONFilePath, (curr) => {
|
||
|
if (syncing == 1) return;
|
||
|
if (curr !== "change") return;
|
||
|
clearTimeout(timeout);
|
||
|
|
||
|
debugLogFn("Main Schema JSON File Changed!");
|
||
|
|
||
|
syncing = 1;
|
||
|
|
||
|
timeout = setTimeout(() => {
|
||
|
const definitions = dbSchemaToType();
|
||
|
|
||
|
fs.writeFileSync(
|
||
|
mainDbTypeDefFile,
|
||
|
definitions?.join("\n\n") || "",
|
||
|
"utf-8"
|
||
|
);
|
||
|
|
||
|
createDbFromSchema({})
|
||
|
.then((res) => {
|
||
|
debugLogFn(res, "res");
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
debugLogFn(err, "res");
|
||
|
})
|
||
|
.finally(() => {
|
||
|
setTimeout(() => {
|
||
|
debugLogFn("Main Rebuilt Successfully!");
|
||
|
syncing = 0;
|
||
|
}, 1000);
|
||
|
});
|
||
|
}, DEBOUNCE);
|
||
|
});
|
||
|
}
|