@prisma-psm/pg 1.0.24 → 1.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma-psm/pg",
3
- "version": "1.0.24",
3
+ "version": "1.0.27",
4
4
  "description": "Prisma Safe Migration Postgres Driver",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
package/src/index.js CHANGED
@@ -8,26 +8,65 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  const parser_1 = require("./parser/parser");
12
15
  const migration_1 = require("./migration");
13
16
  const sql_1 = require("./parser/sql");
14
17
  const dump_1 = require("./dump");
18
+ const fs_1 = __importDefault(require("fs"));
15
19
  function prepare(model) {
16
20
  if (!model.schema)
17
21
  model.schema = "public";
18
22
  }
23
+ function executeRaw(scripts) {
24
+ const sql = [];
25
+ if (!!scripts && !Array.isArray(scripts))
26
+ throw new Error(`dsds ds dsdsdsds ${typeof scripts}`);
27
+ if (!scripts || !Array.isArray(scripts) || !scripts.length)
28
+ return null;
29
+ scripts.forEach(value => {
30
+ const filename = value.filename;
31
+ sql.push(`-- =============================== ${value.filename} ========================================`);
32
+ sql.push(`do $$ begin raise notice '%', format( 'Iniciando a execução do script ${filename}...'); end; $$;`);
33
+ sql.push(value.raw.endsWith(";") ? value.raw : `${value.raw};`);
34
+ sql.push(`do $$ begin raise notice '%', format( 'Iniciando a execução do script ${filename}... [OK]'); end; $$;`);
35
+ sql.push("");
36
+ sql.push("");
37
+ sql.push("");
38
+ });
39
+ return sql.join("\n");
40
+ }
19
41
  const driver = {
20
42
  migrated: (opts) => {
21
43
  return (0, migration_1.migrated)(opts);
22
44
  },
23
45
  migrator: opts => ({
24
- migrate: () => (0, migration_1.migrate)({ sql: opts.migrate, url: opts.url, label: "NEXT" }),
46
+ migrate: (custom) => {
47
+ const sql = [];
48
+ sql.push(opts.migrate);
49
+ ["functions", "triggers", "views"].forEach(group => {
50
+ var _a;
51
+ const raw = executeRaw((_a = custom === null || custom === void 0 ? void 0 : custom.resources) === null || _a === void 0 ? void 0 : _a[group]);
52
+ if (!!raw)
53
+ sql.push(raw);
54
+ });
55
+ const n = sql.join(";\n");
56
+ fs_1.default.writeFileSync("dsdsds.sql", n);
57
+ return (0, migration_1.migrate)({ sql: n, url: opts.url, label: "NEXT" });
58
+ },
25
59
  test: () => (0, migration_1.migrate)({ sql: opts.check, url: opts.url, label: "TEST" }),
26
60
  core: () => (0, migration_1.migrate)({ sql: opts.core, url: opts.url, label: "CORE" }),
27
61
  dump: () => (0, dump_1.dump)(opts),
62
+ executeRaw,
28
63
  execute(str) {
29
64
  return __awaiter(this, void 0, void 0, function* () {
30
- const execute = yield (0, migration_1.migrate)({ sql: str, url: opts.url, label: "EXECUTE" });
65
+ const execute = yield (0, migration_1.migrate)({
66
+ sql: executeRaw(str),
67
+ url: opts.url,
68
+ label: "EXECUTE"
69
+ });
31
70
  return {
32
71
  error: execute.error,
33
72
  messages: execute.messages,
package/src/index.ts CHANGED
@@ -1,8 +1,9 @@
1
- import {PSMDriver, ModelOptions, PSMGenerator, PSMMigrationResult, PSMExecute} from "@prisma-psm/core";
1
+ import {PSMDriver, ModelOptions, PSMGenerator, PSMMigrationResult, PSMExecute, CustomScript} from "@prisma-psm/core";
2
2
  import {parser} from "./parser/parser";
3
3
  import {migrate,migrated} from "./migration";
4
4
  import {sql} from "./parser/sql";
5
5
  import {dump} from "./dump";
6
+ import fs from "fs";
6
7
 
7
8
 
8
9
 
@@ -10,18 +11,50 @@ function prepare( model:ModelOptions ){
10
11
  if( !model.schema ) model.schema = "public";
11
12
  }
12
13
 
14
+ function executeRaw( scripts: CustomScript[] ): string{
15
+ const sql:string[] = [];
16
+ if( !!scripts && !Array.isArray( scripts ) ) throw new Error(`dsds ds dsdsdsds ${typeof scripts}`);
17
+ if( !scripts || !Array.isArray(scripts) || !scripts.length ) return null;
18
+ scripts.forEach(value => {
19
+ const filename:string = value.filename;
20
+ sql.push(`-- =============================== ${value.filename } ========================================` );
21
+ sql.push(`do $$ begin raise notice '%', format( 'Iniciando a execução do script ${filename}...'); end; $$;`);
22
+ sql.push( value.raw.endsWith(";")? value.raw: `${value.raw};`)
23
+ sql.push(`do $$ begin raise notice '%', format( 'Iniciando a execução do script ${filename}... [OK]'); end; $$;`);
24
+ sql.push("" );
25
+ sql.push("" );
26
+ sql.push("" );
27
+ });
28
+ return sql.join("\n");
29
+ }
13
30
 
14
31
  const driver :PSMDriver = {
15
32
  migrated:( opts )=>{
16
33
  return migrated( opts );
17
34
  },
18
- migrator: opts => ({
19
- migrate:() => migrate({ sql: opts.migrate, url: opts.url, label: "NEXT" }),
35
+ migrator: opts =>({
36
+ migrate:( custom ) => {
37
+ const sql = [];
38
+ sql.push( opts.migrate );
39
+ [ "functions", "triggers", "views" ].forEach( group => {
40
+ const raw = executeRaw( custom?.resources?.[group])
41
+ if( !!raw ) sql.push( raw );
42
+ });
43
+ const n = sql.join(";\n");
44
+
45
+ fs.writeFileSync( "dsdsds.sql", n )
46
+ return migrate({ sql: n, url: opts.url, label: "NEXT" });
47
+ },
20
48
  test:() => migrate({ sql: opts.check, url: opts.url, label: "TEST" }),
21
49
  core:() => migrate({ sql: opts.core, url: opts.url, label: "CORE" }),
22
50
  dump:() => dump( opts ),
23
- async execute(str: string): Promise<PSMExecute> {
24
- const execute = await migrate({ sql: str, url: opts.url, label: "EXECUTE" });
51
+ executeRaw,
52
+ async execute(str: CustomScript[]): Promise<PSMExecute> {
53
+ const execute = await migrate({
54
+ sql: executeRaw(str),
55
+ url: opts.url,
56
+ label: "EXECUTE"
57
+ });
25
58
  return {
26
59
  error: execute.error,
27
60
  messages: execute.messages,
@@ -32,7 +65,6 @@ const driver :PSMDriver = {
32
65
 
33
66
  generator:(opts) => {
34
67
  let response = parser(opts);
35
-
36
68
  const generator: PSMGenerator = {
37
69
  migrate: () => sql( { mode: "migrate" }, response),
38
70
  check: () => sql( { mode: "check" }, response),