UNPKG

@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
#!/usr/bin/env node "use strict"; 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();