@prisma-psm/pg 1.0.51 → 1.0.52
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAK/C,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,YAuCtE;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;CACjC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,YAyB7C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG;IACpD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAK/C,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,YAuCtE;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;CACjC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,YAyB7C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG;IACpD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB,CA0PA;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,YAqB1D"}
|
|
@@ -80,62 +80,70 @@ function restoreBackupSQL(opts) {
|
|
|
80
80
|
if ((_b = (_a = opts.model.psm) === null || _a === void 0 ? void 0 : _a.backup) === null || _b === void 0 ? void 0 : _b.skip)
|
|
81
81
|
return null;
|
|
82
82
|
// Função auxiliar para extrair a expressão SQL do default de um campo
|
|
83
|
-
// Aproveita as variáveis shadow e temp do escopo para construir nextval em campos gerados
|
|
84
83
|
function getDefaultSQL(field) {
|
|
85
|
-
//
|
|
86
|
-
if (field.
|
|
87
|
-
|
|
88
|
-
const shadowName = shadow.replace(/^"|"$/g, '');
|
|
89
|
-
const tempName = temp.replace(/^"|"$/g, '');
|
|
90
|
-
const colName = field.dbName || field.name;
|
|
91
|
-
return `nextval(pg_get_serial_sequence('${shadowName}.${tempName}', '${colName}')::regclass)`;
|
|
84
|
+
// Se o campo não tem default, retorna NULL
|
|
85
|
+
if (!field.hasDefaultValue || field.default === undefined || field.default === null) {
|
|
86
|
+
return 'NULL';
|
|
92
87
|
}
|
|
93
88
|
const def = field.default;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
// Caso o default seja um objeto com name e args (padrão Prisma)
|
|
90
|
+
if (typeof def === 'object' && 'name' in def) {
|
|
91
|
+
const name = def.name;
|
|
92
|
+
const args = def.args || [];
|
|
93
|
+
switch (name) {
|
|
94
|
+
case 'autoincrement': {
|
|
95
|
+
// Para autoincrement, precisamos do próximo valor da sequência da shadow table
|
|
96
|
+
// Remove as aspas duplas para usar em pg_get_serial_sequence
|
|
97
|
+
const shadowName = shadow.replace(/^"|"$/g, '');
|
|
98
|
+
const tempName = temp.replace(/^"|"$/g, '');
|
|
99
|
+
const colName = field.dbName || field.name;
|
|
100
|
+
return `nextval(pg_get_serial_sequence('${shadowName}.${tempName}', '${colName}')::regclass)`;
|
|
101
|
+
}
|
|
102
|
+
case 'now':
|
|
103
|
+
return 'now()';
|
|
104
|
+
case 'uuid':
|
|
105
|
+
return 'gen_random_uuid()';
|
|
106
|
+
case 'dbgenerated':
|
|
107
|
+
// args pode ser uma string ou array; se for array, juntamos
|
|
108
|
+
if (Array.isArray(args)) {
|
|
109
|
+
return args.join(' ');
|
|
110
|
+
}
|
|
111
|
+
return args || '';
|
|
112
|
+
default:
|
|
113
|
+
// Se for uma função qualquer, tenta construir chamada de função
|
|
114
|
+
const argsSql = args.map((arg) => {
|
|
115
|
+
if (arg === null || arg === undefined)
|
|
116
|
+
return 'NULL';
|
|
117
|
+
if (typeof arg === 'string')
|
|
118
|
+
return arg;
|
|
119
|
+
if (typeof arg === 'number')
|
|
120
|
+
return String(arg);
|
|
121
|
+
if (typeof arg === 'boolean')
|
|
122
|
+
return arg ? 'true' : 'false';
|
|
123
|
+
return String(arg);
|
|
124
|
+
}).join(', ');
|
|
125
|
+
return `${name}(${argsSql})`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Tipos primitivos (string, number, boolean) – tratados como literais
|
|
97
129
|
if (typeof def === 'string')
|
|
98
130
|
return def;
|
|
99
131
|
if (typeof def === 'number')
|
|
100
132
|
return String(def);
|
|
101
133
|
if (typeof def === 'boolean')
|
|
102
134
|
return def ? 'true' : 'false';
|
|
103
|
-
//
|
|
135
|
+
// Outros objetos (ex: { sql: ... }) – tenta extrair propriedades comuns
|
|
104
136
|
if (typeof def === 'object') {
|
|
105
137
|
const obj = def;
|
|
106
|
-
// Propriedades comuns em alguns dialetos
|
|
107
138
|
if (obj.sql && typeof obj.sql === 'string')
|
|
108
139
|
return obj.sql;
|
|
109
140
|
if (obj.expression && typeof obj.expression === 'string')
|
|
110
141
|
return obj.expression;
|
|
111
|
-
// Função representada por { name, args } (ex: nextval, now)
|
|
112
|
-
if (obj.name && typeof obj.name === 'string') {
|
|
113
|
-
const name = obj.name;
|
|
114
|
-
const args = Array.isArray(obj.args) ? obj.args : [];
|
|
115
|
-
const argsSql = args.map((arg) => {
|
|
116
|
-
if (arg === null || arg === undefined)
|
|
117
|
-
return 'NULL';
|
|
118
|
-
if (typeof arg === 'string')
|
|
119
|
-
return arg;
|
|
120
|
-
if (typeof arg === 'number')
|
|
121
|
-
return String(arg);
|
|
122
|
-
if (typeof arg === 'boolean')
|
|
123
|
-
return arg ? 'true' : 'false';
|
|
124
|
-
if (typeof arg === 'object') {
|
|
125
|
-
// Recursivamente trata argumentos que também podem ser objetos
|
|
126
|
-
return getDefaultSQL({ default: arg });
|
|
127
|
-
}
|
|
128
|
-
return String(arg);
|
|
129
|
-
}).join(', ');
|
|
130
|
-
return `${name}(${argsSql})`;
|
|
131
|
-
}
|
|
132
|
-
// Objetos com toString personalizado (evita [object Object])
|
|
133
142
|
if (obj.toString && obj.toString !== Object.prototype.toString) {
|
|
134
143
|
const str = obj.toString();
|
|
135
144
|
if (str !== '[object Object]')
|
|
136
145
|
return str;
|
|
137
146
|
}
|
|
138
|
-
// Tenta extrair de uma propriedade 'value'
|
|
139
147
|
if (obj.value !== undefined) {
|
|
140
148
|
return getDefaultSQL({ default: obj.value });
|
|
141
149
|
}
|
|
@@ -143,7 +151,7 @@ function restoreBackupSQL(opts) {
|
|
|
143
151
|
// Fallback seguro
|
|
144
152
|
return 'NULL';
|
|
145
153
|
}
|
|
146
|
-
// Filtra campos escalares (incluindo os gerados, para preservar IDs)
|
|
154
|
+
// Filtra campos escalares (incluindo os gerados, para preservar IDs e defaults)
|
|
147
155
|
const filter = (field) => field.kind === "scalar";
|
|
148
156
|
const fields = opts.model.fields.filter(filter);
|
|
149
157
|
// Lista de colunas para o INSERT (na mesma ordem dos campos)
|
|
@@ -162,7 +170,7 @@ function restoreBackupSQL(opts) {
|
|
|
162
170
|
`.trim();
|
|
163
171
|
})
|
|
164
172
|
.join(",\n");
|
|
165
|
-
//
|
|
173
|
+
// DEFAULT_QUERY com CTE que inclui o JSON original e aplica CASE para cada coluna
|
|
166
174
|
const DEFAULT_QUERY = `
|
|
167
175
|
WITH __source AS (
|
|
168
176
|
SELECT
|
|
@@ -270,7 +278,7 @@ function restoreBackupSQL(opts) {
|
|
|
270
278
|
$$;
|
|
271
279
|
`.split("\n")
|
|
272
280
|
.filter((line) => line.trim() !== "")
|
|
273
|
-
.map((line) => line.replace(/^ {6}/, ""))
|
|
281
|
+
.map((line) => line.replace(/^ {6}/, ""))
|
|
274
282
|
.join("\n");
|
|
275
283
|
return {
|
|
276
284
|
data: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":";;AAQA,kEAuCC;AAQD,8BAyBC;AAED,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,58 +93,65 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
93
93
|
if (opts.model.psm?.backup?.skip) return null as any;
|
|
94
94
|
|
|
95
95
|
// Função auxiliar para extrair a expressão SQL do default de um campo
|
|
96
|
-
// Aproveita as variáveis shadow e temp do escopo para construir nextval em campos gerados
|
|
97
96
|
function getDefaultSQL(field: FieldOption): string {
|
|
98
|
-
//
|
|
99
|
-
if (field.
|
|
100
|
-
|
|
101
|
-
const shadowName = shadow.replace(/^"|"$/g, '');
|
|
102
|
-
const tempName = temp.replace(/^"|"$/g, '');
|
|
103
|
-
const colName = field.dbName || field.name;
|
|
104
|
-
return `nextval(pg_get_serial_sequence('${shadowName}.${tempName}', '${colName}')::regclass)`;
|
|
97
|
+
// Se o campo não tem default, retorna NULL
|
|
98
|
+
if (!field.hasDefaultValue || field.default === undefined || field.default === null) {
|
|
99
|
+
return 'NULL';
|
|
105
100
|
}
|
|
106
101
|
|
|
107
102
|
const def = field.default;
|
|
108
|
-
if (def === undefined || def === null) return 'NULL';
|
|
109
103
|
|
|
110
|
-
//
|
|
104
|
+
// Caso o default seja um objeto com name e args (padrão Prisma)
|
|
105
|
+
if (typeof def === 'object' && 'name' in def) {
|
|
106
|
+
const name = def.name;
|
|
107
|
+
const args = (def as any).args || [];
|
|
108
|
+
|
|
109
|
+
switch (name) {
|
|
110
|
+
case 'autoincrement': {
|
|
111
|
+
// Para autoincrement, precisamos do próximo valor da sequência da shadow table
|
|
112
|
+
// Remove as aspas duplas para usar em pg_get_serial_sequence
|
|
113
|
+
const shadowName = shadow.replace(/^"|"$/g, '');
|
|
114
|
+
const tempName = temp.replace(/^"|"$/g, '');
|
|
115
|
+
const colName = field.dbName || field.name;
|
|
116
|
+
return `nextval(pg_get_serial_sequence('${shadowName}.${tempName}', '${colName}')::regclass)`;
|
|
117
|
+
}
|
|
118
|
+
case 'now':
|
|
119
|
+
return 'now()';
|
|
120
|
+
case 'uuid':
|
|
121
|
+
return 'gen_random_uuid()';
|
|
122
|
+
case 'dbgenerated':
|
|
123
|
+
// args pode ser uma string ou array; se for array, juntamos
|
|
124
|
+
if (Array.isArray(args)) {
|
|
125
|
+
return args.join(' ');
|
|
126
|
+
}
|
|
127
|
+
return args || '';
|
|
128
|
+
default:
|
|
129
|
+
// Se for uma função qualquer, tenta construir chamada de função
|
|
130
|
+
const argsSql = args.map((arg: any) => {
|
|
131
|
+
if (arg === null || arg === undefined) return 'NULL';
|
|
132
|
+
if (typeof arg === 'string') return arg;
|
|
133
|
+
if (typeof arg === 'number') return String(arg);
|
|
134
|
+
if (typeof arg === 'boolean') return arg ? 'true' : 'false';
|
|
135
|
+
return String(arg);
|
|
136
|
+
}).join(', ');
|
|
137
|
+
return `${name}(${argsSql})`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Tipos primitivos (string, number, boolean) – tratados como literais
|
|
111
142
|
if (typeof def === 'string') return def;
|
|
112
143
|
if (typeof def === 'number') return String(def);
|
|
113
144
|
if (typeof def === 'boolean') return def ? 'true' : 'false';
|
|
114
145
|
|
|
115
|
-
//
|
|
146
|
+
// Outros objetos (ex: { sql: ... }) – tenta extrair propriedades comuns
|
|
116
147
|
if (typeof def === 'object') {
|
|
117
148
|
const obj = def as any;
|
|
118
|
-
|
|
119
|
-
// Propriedades comuns em alguns dialetos
|
|
120
149
|
if (obj.sql && typeof obj.sql === 'string') return obj.sql;
|
|
121
150
|
if (obj.expression && typeof obj.expression === 'string') return obj.expression;
|
|
122
|
-
|
|
123
|
-
// Função representada por { name, args } (ex: nextval, now)
|
|
124
|
-
if (obj.name && typeof obj.name === 'string') {
|
|
125
|
-
const name = obj.name;
|
|
126
|
-
const args = Array.isArray(obj.args) ? obj.args : [];
|
|
127
|
-
const argsSql = args.map((arg: any) => {
|
|
128
|
-
if (arg === null || arg === undefined) return 'NULL';
|
|
129
|
-
if (typeof arg === 'string') return arg;
|
|
130
|
-
if (typeof arg === 'number') return String(arg);
|
|
131
|
-
if (typeof arg === 'boolean') return arg ? 'true' : 'false';
|
|
132
|
-
if (typeof arg === 'object') {
|
|
133
|
-
// Recursivamente trata argumentos que também podem ser objetos
|
|
134
|
-
return getDefaultSQL({ default: arg } as FieldOption);
|
|
135
|
-
}
|
|
136
|
-
return String(arg);
|
|
137
|
-
}).join(', ');
|
|
138
|
-
return `${name}(${argsSql})`;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// Objetos com toString personalizado (evita [object Object])
|
|
142
151
|
if (obj.toString && obj.toString !== Object.prototype.toString) {
|
|
143
152
|
const str = obj.toString();
|
|
144
153
|
if (str !== '[object Object]') return str;
|
|
145
154
|
}
|
|
146
|
-
|
|
147
|
-
// Tenta extrair de uma propriedade 'value'
|
|
148
155
|
if (obj.value !== undefined) {
|
|
149
156
|
return getDefaultSQL({ default: obj.value } as FieldOption);
|
|
150
157
|
}
|
|
@@ -154,7 +161,7 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
154
161
|
return 'NULL';
|
|
155
162
|
}
|
|
156
163
|
|
|
157
|
-
// Filtra campos escalares (incluindo os gerados, para preservar IDs)
|
|
164
|
+
// Filtra campos escalares (incluindo os gerados, para preservar IDs e defaults)
|
|
158
165
|
const filter = (field: FieldOption) => field.kind === "scalar";
|
|
159
166
|
const fields = opts.model.fields.filter(filter);
|
|
160
167
|
|
|
@@ -176,7 +183,7 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
176
183
|
})
|
|
177
184
|
.join(",\n");
|
|
178
185
|
|
|
179
|
-
//
|
|
186
|
+
// DEFAULT_QUERY com CTE que inclui o JSON original e aplica CASE para cada coluna
|
|
180
187
|
const DEFAULT_QUERY = `
|
|
181
188
|
WITH __source AS (
|
|
182
189
|
SELECT
|
|
@@ -301,7 +308,7 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
301
308
|
$$;
|
|
302
309
|
`.split("\n")
|
|
303
310
|
.filter((line) => line.trim() !== "")
|
|
304
|
-
.map((line) => line.replace(/^ {6}/, ""))
|
|
311
|
+
.map((line) => line.replace(/^ {6}/, ""))
|
|
305
312
|
.join("\n");
|
|
306
313
|
|
|
307
314
|
return {
|