-
Notifications
You must be signed in to change notification settings - Fork 0
/
generate-relations-file.ts
43 lines (37 loc) · 1.33 KB
/
generate-relations-file.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import path from "path";
import { writeLog } from "fast-node-logger";
import { defaultJsonDir } from "../helpers/variables";
import { Relation } from "../services/link-id";
import { writeToFile } from "../helpers/write-to-file";
type GenerateRelationsFileFnInput = {
relations: Relation[];
options?: {
/** output directory of file. default directory named "json"
* - Note: at this point file name hard coded to "SchemaRelations.json" to prevent conflict with other generated files
*/
outDir?: string;
/** default true */
usePrettier?: boolean;
};
};
/** generate json file for defined relations between attributes by process linkIds fields */
export async function generateRelationsFile({
relations,
options,
}: GenerateRelationsFileFnInput): Promise<void> {
writeLog(`generateRelationsFile()`, { level: "trace" });
const textToWriteToFile = JSON.stringify(relations);
const outDir = options?.outDir ?? defaultJsonDir;
let usePrettier = true;
if (options && options.usePrettier) {
usePrettier = options.usePrettier;
}
const filePath = path.join(outDir, "SchemaRelations.json");
await writeToFile(textToWriteToFile, {
filePath,
prettierOptions: usePrettier ? { parser: "json-stringify" } : undefined,
});
writeLog(`SchemaRelations has been created in ${filePath}`, {
stdout: true,
});
}