22 lines
755 B
TypeScript
22 lines
755 B
TypeScript
import getfiles from "https://deno.land/x/getfiles@v1.0.0/mod.ts";
|
|
import { exporter } from "npm:@dbml/core";
|
|
|
|
const schema_dir = "./db/";
|
|
|
|
export default function (args) {
|
|
const files = getfiles(schema_dir).filter((x) => x.name?.endsWith(".dbml"))
|
|
.sort((a, b) => a.name > b.name ? -1 : a.name == b.name ? 0 : 1);
|
|
|
|
Deno.mkdirSync("./db/migrations", { recursive: true });
|
|
for (const file of files) {
|
|
const dbml = Deno.readTextFileSync(schema_dir + file.name);
|
|
const sql = exporter.export(dbml, "postgres");
|
|
Deno.writeTextFileSync(
|
|
"./db/migrations/" +
|
|
new Date().toISOString() +
|
|
"_up_" + file.name.replace(/\.dbml$/, "") + ".sql",
|
|
sql,
|
|
);
|
|
}
|
|
}
|