mirror of
https://github.com/spacebarchat/server.git
synced 2026-03-31 22:25:43 +00:00
80 lines
2.6 KiB
JavaScript
80 lines
2.6 KiB
JavaScript
#!/usr/bin/node
|
|
const path = require("path");
|
|
const fs = require("fs");
|
|
const { stdout, exit } = require("process");
|
|
const { execIn } = require("./utils.js");
|
|
const { ask } = require("./utils/ask.js");
|
|
|
|
async function main() {
|
|
let filename;
|
|
if(process.argv[2]) filename = process.argv[2];
|
|
else filename = await ask("Please enter the name of your migration: ");
|
|
let dbconf;
|
|
try {
|
|
dbconf = JSON.parse(fs.readFileSync("dbconf.json"));
|
|
} catch (e) {
|
|
console.log("No dbconf.json found!");
|
|
dbconf = {};
|
|
}
|
|
|
|
if(!dbconf["sqlite"])
|
|
dbconf.sqlite = {
|
|
conn_str: "migrations.db",
|
|
migrations_dir: "sqlite",
|
|
package: "sqlite3"
|
|
}
|
|
if(!dbconf["postgres"] && process.env.FC_DB_POSTGRES) {
|
|
console.log("Found FC_DB_POSTGRES environment variable. Using it!");
|
|
dbconf.postgres = {
|
|
conn_str: process.env.FC_DB_POSTGRES,
|
|
migrations_dir: "postgres",
|
|
package: "pg"
|
|
}
|
|
}
|
|
if(!dbconf["mariadb"] && process.env.FC_DB_MARIADB){
|
|
console.log("Found FC_DB_MARIADB environment variable. Using it!");
|
|
dbconf.mariadb = {
|
|
conn_str: process.env.FC_DB_MARIADB,
|
|
migrations_dir: "mariadb",
|
|
package: "mysql2"
|
|
}
|
|
}
|
|
fs.writeFileSync("dbconf.json", JSON.stringify(dbconf, null, 4));
|
|
|
|
//build
|
|
execIn(`node scripts/build_new.js`, process.cwd(), {stdio: "inherit"});
|
|
|
|
if(fs.existsSync(".env") && !fs.existsSync(".env.bak"))
|
|
fs.renameSync(".env", ".env.bak");
|
|
Object.keys(dbconf).forEach((db) => {
|
|
console.log(`Applying migrations for ${db}`);
|
|
if(!fs.existsSync(path.join("node_modules", dbconf[db].package)))
|
|
execIn(`npm i ${dbconf[db].package}`, process.cwd());
|
|
fs.writeFileSync(
|
|
`.env`,
|
|
`DATABASE=${dbconf[db].conn_str}
|
|
THREADS=1
|
|
DB_MIGRATE=true
|
|
DB_VERBOSE=true`
|
|
);
|
|
execIn(`node dist/start.js`, process.cwd(), {stdio: "inherit"});
|
|
});
|
|
|
|
Object.keys(dbconf).forEach((db) => {
|
|
console.log(`Generating new migrations for ${db}`);
|
|
fs.writeFileSync(
|
|
`.env`,
|
|
`DATABASE=${dbconf[db].conn_str}
|
|
THREADS=1
|
|
DB_MIGRATE=true
|
|
DB_VERBOSE=true`
|
|
);
|
|
execIn(`node node_modules/typeorm/cli.js migration:generate "src/util/migrations/${db}/${filename}" -d dist/util/util/Database.js -p`, process.cwd(), {stdio: "inherit"});
|
|
});
|
|
if(fs.existsSync(".env.bak")) {
|
|
fs.rmSync(".env");
|
|
fs.renameSync(".env.bak", ".env");
|
|
}
|
|
exit(0);
|
|
}
|
|
main(); |