@blitzjs/cli
Version:
Blitz.js CLI
97 lines (96 loc) • 3.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Db = exports.getDbName = void 0;
const tslib_1 = require("tslib");
const command_1 = require("@oclif/command");
const logging_1 = require("next/dist/server/lib/logging");
function getDbName(connectionString) {
const dbUrlParts = connectionString.split("/");
const dbName = dbUrlParts[dbUrlParts.length - 1];
return dbName;
}
exports.getDbName = getDbName;
function runSeed(seedBasePath) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
require("../utils/setup-ts-node").setupTsnode();
const projectRoot = require("next/dist/server/lib/utils").getProjectRootSync();
const seedPath = require("path").join(projectRoot, seedBasePath);
const dbPath = require("path").join(projectRoot, "db/index");
logging_1.log.branded("Seeding database");
let spinner = logging_1.log.spinner("Loading seeds\n").start();
let seeds;
try {
seeds = require(seedPath).default;
if (seeds === undefined) {
throw new Error(`Couldn't find default export from ${seedBasePath}`);
}
}
catch (err) {
(0, logging_1.baseLogger)({ displayDateTime: false }).error(`Couldn't import default from ${seedBasePath}`);
throw err;
}
spinner.succeed();
try {
console.log("\n" + logging_1.log.withCaret("Seeding..."));
seeds && (yield seeds());
}
catch (err) {
(0, logging_1.baseLogger)().prettyError(err);
(0, logging_1.baseLogger)({ displayDateTime: false }).error(`Couldn't run imported function, are you sure it's a function?`);
throw err;
}
const db = require(dbPath).default;
yield db.$disconnect();
logging_1.log.success("Done seeding");
});
}
class Db extends command_1.Command {
run() {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
process.env.CLI_COMMAND_DB = "true";
const { args, flags } = this.parse(Db);
const command = args["command"];
if (command === "help") {
return Db.run(["--help"]);
}
if (command === "seed") {
try {
return yield runSeed(flags.file);
}
catch (err) {
(0, logging_1.baseLogger)({ displayDateTime: false }).error("Could not seed database:");
(0, logging_1.baseLogger)().prettyError(err);
process.exit(1);
}
}
this.log("\nThat command is no longer available..");
this.log("For any prisma related commands, use the `blitz prisma` command instead:");
this.log("\n `blitz prisma COMMAND`\n");
});
}
}
exports.Db = Db;
Db.description = `Run database commands
${require("chalk").bold("seed")} Generates seeded data in database via Prisma.
`;
Db.args = [
{
name: "command",
description: "Run specific db command",
required: true,
default: "help",
},
];
Db.flags = {
help: command_1.flags.help({ char: "h" }),
file: command_1.flags.string({
default: "db/seeds",
char: "f",
description: `Path to the seeds file, relative to the project root folder. Examples: db/seeds, db/seeds.ts, db/seeds/index.ts, db/my-seeds`,
}),
env: command_1.flags.string({
char: "e",
description: "Set app environment name",
}),
};
Db.strict = false;