@prisma-psm/core 1.0.28 → 1.0.30

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/core",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "PSM - Prisma SAFE MIGRATE: ferramenta CLI para migração segura de bancos Prisma com suporte avançado.",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -19,31 +19,18 @@ export declare function fetch(opts: FetchOptions): Promise<{
19
19
  pulled: boolean;
20
20
  label: string;
21
21
  message: string[];
22
- date: Date;
23
- }[];
24
- error?: undefined;
25
- hint?: undefined;
26
- } | {
27
- revs: {
28
- psm: PSMConfigFile;
29
- migrate: string;
30
- pulled: boolean;
31
- label: string;
32
- message: string[];
33
- date: Date;
22
+ date: Date | null;
34
23
  }[];
35
24
  error: Error;
36
- hint?: undefined;
37
25
  } | {
38
- error: Error;
39
- hint: any;
40
26
  revs: {
41
27
  psm: PSMConfigFile;
42
28
  migrate: string;
43
29
  pulled: boolean;
44
30
  label: string;
45
31
  message: string[];
46
- date: Date;
32
+ date: Date | null;
47
33
  }[];
34
+ error?: undefined;
48
35
  }>;
49
36
  //# sourceMappingURL=deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAC;AAGpC,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAC,MAAM,CAAA;IACd,QAAQ,CAAC,EAAC,MAAM,CAAA;IAChB,KAAK,CAAC,EAAC,MAAM,CAAA;IACb,kBAAkB,EAAC,MAAM,CAAA;CAC5B;AAID,wBAAsB,MAAM,CAAE,IAAI,EAAE,aAAa,iBA6DhD;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAC,MAAM,CAAC;IACZ,MAAM,EAAC,SAAS,CAAC;IACjB,GAAG,EAAC,aAAa,CAAA;CACpB;AACD,wBAAsB,KAAK,CAAC,IAAI,EAAC,YAAY;;;;;;iBAahB,MAAM,EAAE;cACP,IAAI;;;;;;;;;;iBADL,MAAM,EAAE;cACP,IAAI;;;;;;;;;;;;iBADL,MAAM,EAAE;cACP,IAAI;;GAyDjC"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["deploy.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAC;AAGpC,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAC,MAAM,CAAA;IACd,QAAQ,CAAC,EAAC,MAAM,CAAA;IAChB,KAAK,CAAC,EAAC,MAAM,CAAA;IACb,kBAAkB,EAAC,MAAM,CAAA;CAC5B;AAID,wBAAsB,MAAM,CAAE,IAAI,EAAE,aAAa,iBA6DhD;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAC,MAAM,CAAC;IACZ,MAAM,EAAC,SAAS,CAAC;IACjB,GAAG,EAAC,aAAa,CAAA;CACpB;AACD,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY;;aAKjC,aAAa;iBACT,MAAM;gBACP,OAAO;eACR,MAAM;iBACJ,MAAM,EAAE;cACX,IAAI,GAAG,IAAI;;;;;aALZ,aAAa;iBACT,MAAM;gBACP,OAAO;eACR,MAAM;iBACJ,MAAM,EAAE;cACX,IAAI,GAAG,IAAI;;;GA2ExB"}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ // filename: src/tools/deploy.ts
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -37,6 +38,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
38
  Object.defineProperty(exports, "__esModule", { value: true });
38
39
  exports.deploy = deploy;
39
40
  exports.fetch = fetch;
41
+ const tar_1 = __importDefault(require("tar"));
42
+ const os = __importStar(require("node:os"));
40
43
  const fs = __importStar(require("node:fs"));
41
44
  const yaml = __importStar(require("yaml"));
42
45
  const Path = __importStar(require("node:path"));
@@ -101,67 +104,68 @@ function deploy(opts) {
101
104
  function fetch(opts) {
102
105
  return __awaiter(this, void 0, void 0, function* () {
103
106
  var _a;
104
- const revisions = Path.join(opts.home, `psm/revisions/schema`);
105
- let revs = fs.readdirSync(revisions)
106
- .filter(n => fs.statSync(Path.join(revisions, n)).isDirectory())
107
- .map(n => {
108
- let psm = yaml.parse(fs.readFileSync(Path.join(revisions, n, "psm.yml")).toString());
109
- let migrate = fs.readFileSync(Path.join(revisions, n, "migration.sql")).toString();
110
- return {
107
+ const revisionsDir = Path.join(opts.home, "psm/revisions/schema");
108
+ const revFiles = fs.readdirSync(revisionsDir).filter(n => n.endsWith(".tar.gz"));
109
+ const revs = [];
110
+ for (const file of revFiles) {
111
+ const tempDir = fs.mkdtempSync(Path.join(os.tmpdir(), "psm-"));
112
+ yield tar_1.default.x({
113
+ file: Path.join(revisionsDir, file),
114
+ cwd: tempDir,
115
+ });
116
+ const extractedDir = fs.readdirSync(tempDir)[0];
117
+ const fullPath = Path.join(tempDir, extractedDir);
118
+ const psmPath = Path.join(fullPath, "psm.yml");
119
+ const migrationPath = Path.join(fullPath, "migration.sql");
120
+ if (!fs.existsSync(psmPath) || !fs.existsSync(migrationPath)) {
121
+ fs.rmSync(tempDir, { recursive: true, force: true });
122
+ throw new Error(`Invalid migration archive: ${file}`);
123
+ }
124
+ const psm = yaml.parse(fs.readFileSync(psmPath, "utf-8"));
125
+ const migrate = fs.readFileSync(migrationPath, "utf-8");
126
+ revs.push({
111
127
  psm,
112
128
  migrate,
113
129
  pulled: false,
114
130
  label: "",
115
131
  message: [],
116
132
  date: null,
117
- };
118
- });
119
- if (!revs.length) {
120
- return {
121
- revs: revs,
122
- };
133
+ });
134
+ fs.rmSync(tempDir, { recursive: true, force: true });
123
135
  }
136
+ // verificar previews faltantes
124
137
  const missedPreviews = revs.filter((n, i) => {
125
138
  return (!!n.psm.migration.preview && !revs.find(p => p.psm.migration.revision === n.psm.migration.preview))
126
139
  || (i > 0 && !n.psm.migration.preview);
127
140
  });
128
- if (!!missedPreviews.length) {
141
+ if (missedPreviews.length) {
129
142
  const missed = missedPreviews.map(n => `${n.psm.psm.migration} - ${n.psm.migration.label} at ${n.psm.migration.instante}`);
130
143
  return {
131
- revs: revs,
132
- error: new Error(`MISSING PREVIEW migration for...\n ${missed.join(", ")}`),
144
+ revs,
145
+ error: new Error(`MISSING PREVIEW migration for...\n${missed.join(", ")}`),
133
146
  };
134
147
  }
135
- let migrated = yield opts.driver.migrated({
148
+ // marcar revisões migradas
149
+ const migrated = yield opts.driver.migrated({
136
150
  url: process.env[opts.psm.psm.url],
137
- sys: opts.psm.psm.sys
151
+ sys: opts.psm.psm.sys,
138
152
  });
139
153
  if (!migrated.success) {
140
154
  console.error(migrated.error);
141
- migrated.messages.forEach(error => {
142
- console.error(error);
143
- });
144
- return {
145
- error: new Error("Load Migrated failed!"),
146
- hint: migrated.error,
147
- revs: revs
148
- };
155
+ migrated.messages.forEach(console.error);
156
+ return { revs, error: new Error("Load Migrated failed!") };
149
157
  }
150
- for (let i = 0; i < revs.length; i++) {
151
- let next = revs[i];
152
- let pl = !!((_a = next.psm.migration.label) === null || _a === void 0 ? void 0 : _a.length) ? ` - ${next.psm.migration.label} ` : " ";
153
- let label = `RevNo ${chalk_1.default.bold(next.psm.migration.revision)}${pl}commited at ${next.psm.migration.instante}`;
154
- const mig = migrated.migrated.find(value => value.sid === next.psm.psm.migration);
155
- next.label = label;
156
- if (!!mig) {
158
+ for (const next of revs) {
159
+ const pl = ((_a = next.psm.migration.label) === null || _a === void 0 ? void 0 : _a.length) ? ` - ${next.psm.migration.label} ` : " ";
160
+ next.label = `RevNo ${next.psm.migration.revision}${pl}commited at ${next.psm.migration.instante}`;
161
+ const mig = migrated.migrated.find(v => v.sid === next.psm.psm.migration);
162
+ if (mig) {
157
163
  next.date = mig.date;
158
- next.message.push(`${label} is migrated at ${mig.date}`);
164
+ next.message.push(`${next.label} is migrated at ${mig.date}`);
159
165
  next.pulled = true;
160
166
  }
161
167
  }
162
- return {
163
- revs
164
- };
168
+ return { revs };
165
169
  });
166
170
  }
167
171
  //# sourceMappingURL=deploy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["deploy.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ // filename: src/tools/deploy.ts
2
+
3
+ import tar from "tar";
4
+ import * as os from "node:os";
1
5
  import * as fs from "node:fs";
2
6
  import * as yaml from "yaml";
3
7
  import * as Path from "node:path";
@@ -83,75 +87,89 @@ export interface FetchOptions {
83
87
  driver:PSMDriver,
84
88
  psm:PSMConfigFile
85
89
  }
86
- export async function fetch(opts:FetchOptions){
87
- const revisions = Path.join( opts.home, `psm/revisions/schema`);
88
- let revs = fs.readdirSync( revisions )
89
- .filter( n => fs.statSync( Path.join( revisions, n)).isDirectory() )
90
- .map( n => {
91
- let psm = yaml.parse( fs.readFileSync( Path.join( revisions, n, "psm.yml") ).toString() ) as PSMConfigFile
92
-
93
- let migrate = fs.readFileSync( Path.join( revisions, n, "migration.sql") ).toString()
94
- return {
95
- psm,
96
- migrate,
97
- pulled:false,
98
- label:"",
99
- message:[]as string[],
100
- date: null as Date,
101
- }
90
+ export async function fetch(opts: FetchOptions) {
91
+ const revisionsDir = Path.join(opts.home, "psm/revisions/schema");
92
+ const revFiles = fs.readdirSync(revisionsDir).filter(n => n.endsWith(".tar.gz"));
93
+
94
+ const revs: Array<{
95
+ psm: PSMConfigFile;
96
+ migrate: string;
97
+ pulled: boolean;
98
+ label: string;
99
+ message: string[];
100
+ date: Date | null;
101
+ }> = [];
102
+
103
+ for (const file of revFiles) {
104
+ const tempDir = fs.mkdtempSync(Path.join(os.tmpdir(), "psm-"));
105
+
106
+ await tar.x({
107
+ file: Path.join(revisionsDir, file),
108
+ cwd: tempDir,
102
109
  });
103
110
 
104
- if( !revs.length ){
105
- return {
106
- revs: revs,
111
+ const extractedDir = fs.readdirSync(tempDir)[0];
112
+ const fullPath = Path.join(tempDir, extractedDir);
107
113
 
108
- };
114
+ const psmPath = Path.join(fullPath, "psm.yml");
115
+ const migrationPath = Path.join(fullPath, "migration.sql");
116
+
117
+ if (!fs.existsSync(psmPath) || !fs.existsSync(migrationPath)) {
118
+ fs.rmSync(tempDir, { recursive: true, force: true });
119
+ throw new Error(`Invalid migration archive: ${file}`);
120
+ }
121
+
122
+ const psm = yaml.parse(fs.readFileSync(psmPath, "utf-8")) as PSMConfigFile;
123
+ const migrate = fs.readFileSync(migrationPath, "utf-8");
124
+
125
+ revs.push({
126
+ psm,
127
+ migrate,
128
+ pulled: false,
129
+ label: "",
130
+ message: [],
131
+ date: null,
132
+ });
133
+
134
+ fs.rmSync(tempDir, { recursive: true, force: true });
109
135
  }
110
136
 
111
- const missedPreviews = revs.filter( (n, i) => {
112
- return (!!n.psm.migration.preview && !revs.find( p => p.psm.migration.revision === n.psm.migration.preview))
113
- || ( i > 0 && !n.psm.migration.preview)
137
+ // verificar previews faltantes
138
+ const missedPreviews = revs.filter((n, i) => {
139
+ return (!!n.psm.migration.preview && !revs.find(p => p.psm.migration.revision === n.psm.migration.preview))
140
+ || (i > 0 && !n.psm.migration.preview);
114
141
  });
115
142
 
116
- if( !!missedPreviews.length){
117
- const missed = missedPreviews.map(n=> `${n.psm.psm.migration} - ${n.psm.migration.label} at ${n.psm.migration.instante}` );
143
+ if (missedPreviews.length) {
144
+ const missed = missedPreviews.map(n => `${n.psm.psm.migration} - ${n.psm.migration.label} at ${n.psm.migration.instante}`);
118
145
  return {
119
- revs: revs,
120
- error: new Error(`MISSING PREVIEW migration for...\n ${missed.join(", ")}`),
146
+ revs,
147
+ error: new Error(`MISSING PREVIEW migration for...\n${missed.join(", ")}`),
121
148
  };
122
149
  }
123
150
 
124
-
125
- let migrated = await opts.driver.migrated({
151
+ // marcar revisões já migradas
152
+ const migrated = await opts.driver.migrated({
126
153
  url: process.env[opts.psm.psm.url],
127
- sys: opts.psm.psm.sys
154
+ sys: opts.psm.psm.sys,
128
155
  });
129
156
 
130
- if( !migrated.success ) {
131
- console.error( migrated.error );
132
- migrated.messages.forEach( error => {
133
- console.error( error );
134
- });
135
- return {
136
- error: new Error( "Load Migrated failed!" ),
137
- hint: migrated.error,
138
- revs: revs
139
- };
157
+ if (!migrated.success) {
158
+ console.error(migrated.error);
159
+ migrated.messages.forEach(console.error);
160
+ return { revs, error: new Error("Load Migrated failed!") };
140
161
  }
141
162
 
142
- for (let i = 0; i < revs.length; i++) {
143
- let next = revs[i];
144
- let pl = !!next.psm.migration.label?.length ? ` - ${next.psm.migration.label} `: " "
145
- let label = `RevNo ${ chalk.bold(next.psm.migration.revision)}${pl}commited at ${next.psm.migration.instante}`;
146
- const mig = migrated.migrated.find( value => value.sid === next.psm.psm.migration );
147
- next.label = label;
148
- if( !!mig ) {
163
+ for (const next of revs) {
164
+ const pl = next.psm.migration.label?.length ? ` - ${next.psm.migration.label} ` : " ";
165
+ next.label = `RevNo ${next.psm.migration.revision}${pl}commited at ${next.psm.migration.instante}`;
166
+ const mig = migrated.migrated.find(v => v.sid === next.psm.psm.migration);
167
+ if (mig) {
149
168
  next.date = mig.date;
150
- next.message.push(`${label} is migrated at ${mig.date}`);
169
+ next.message.push(`${next.label} is migrated at ${mig.date}`);
151
170
  next.pulled = true;
152
171
  }
153
172
  }
154
- return {
155
- revs
156
- };
173
+
174
+ return { revs };
157
175
  }