@shoito/prismarls
Version:
Prismarls is a CLI tool designed to facilitate the integration of PostgreSQL Row-Level Security (RLS) with Prisma Migrations. After creating a migration using `prisma migrate dev --create-only`, running `prismarls` will automatically generate SQL to appen
38 lines (37 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
// Parses command line arguments and returns structured data
function parseCommandLineArguments() {
const schemaArg = process.argv.find((arg) => arg.startsWith("--schema="));
const migrationsArg = process.argv.find((arg) => arg.startsWith("--migrations="));
const currentSettingIsolationArg = process.argv.find((arg) => arg.startsWith("--currentSettingIsolation="));
const currentUserArg = process.argv.find((arg) => arg.startsWith("--currentUser"));
const currentSettingBypassArg = process.argv.find((arg) => arg.startsWith("--currentSettingBypass="));
const forceEnableArg = process.argv.find((arg) => arg.startsWith("--forceEnable"));
return {
schemaFile: schemaArg ? schemaArg.split("=")[1] : "./prisma/schema.prisma",
migrationsDir: migrationsArg
? migrationsArg.split("=")[1]
: "./prisma/migrations",
currentSettingIsolation: currentSettingIsolationArg
? currentSettingIsolationArg.split("=")[1]
: "app.tenant_id",
currentUser: !!currentUserArg,
currentSettingBypass: currentSettingBypassArg
? currentSettingBypassArg.split("=")[1]
: "app.bypass_rls",
forceEnable: !!forceEnableArg,
};
}
function main() {
const args = parseCommandLineArguments();
const rlsModels = (0, _1.extractRlsFields)(args.schemaFile);
if (rlsModels.length === 0) {
console.log("No RLS fields found");
return;
}
(0, _1.appendRlsSettingsToMigration)(rlsModels, args.migrationsDir, args.currentSettingIsolation, args.currentUser, args.currentSettingBypass, args.forceEnable);
}
main();