@prisma-psm/pg 1.0.50 → 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"}
|
|
@@ -81,53 +81,69 @@ function restoreBackupSQL(opts) {
|
|
|
81
81
|
return null;
|
|
82
82
|
// Função auxiliar para extrair a expressão SQL do default de um campo
|
|
83
83
|
function getDefaultSQL(field) {
|
|
84
|
-
|
|
85
|
-
if (
|
|
84
|
+
// Se o campo não tem default, retorna NULL
|
|
85
|
+
if (!field.hasDefaultValue || field.default === undefined || field.default === null) {
|
|
86
86
|
return 'NULL';
|
|
87
|
-
|
|
87
|
+
}
|
|
88
|
+
const def = field.default;
|
|
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
|
|
88
129
|
if (typeof def === 'string')
|
|
89
130
|
return def;
|
|
90
131
|
if (typeof def === 'number')
|
|
91
132
|
return String(def);
|
|
92
133
|
if (typeof def === 'boolean')
|
|
93
134
|
return def ? 'true' : 'false';
|
|
94
|
-
//
|
|
135
|
+
// Outros objetos (ex: { sql: ... }) – tenta extrair propriedades comuns
|
|
95
136
|
if (typeof def === 'object') {
|
|
96
|
-
const obj = def;
|
|
97
|
-
// 2.1 Propriedades comuns em alguns dialetos (sql, expression)
|
|
137
|
+
const obj = def;
|
|
98
138
|
if (obj.sql && typeof obj.sql === 'string')
|
|
99
139
|
return obj.sql;
|
|
100
140
|
if (obj.expression && typeof obj.expression === 'string')
|
|
101
141
|
return obj.expression;
|
|
102
|
-
// 2.2 Função representada por { name, args } (padrão Prisma para funções como nextval, now)
|
|
103
|
-
if (obj.name && typeof obj.name === 'string') {
|
|
104
|
-
const name = obj.name;
|
|
105
|
-
const args = Array.isArray(obj.args) ? obj.args : [];
|
|
106
|
-
// Converte cada argumento recursivamente
|
|
107
|
-
const argsSql = args.map((arg) => {
|
|
108
|
-
if (arg === null || arg === undefined)
|
|
109
|
-
return 'NULL';
|
|
110
|
-
if (typeof arg === 'string')
|
|
111
|
-
return arg;
|
|
112
|
-
if (typeof arg === 'number')
|
|
113
|
-
return String(arg);
|
|
114
|
-
if (typeof arg === 'boolean')
|
|
115
|
-
return arg ? 'true' : 'false';
|
|
116
|
-
if (typeof arg === 'object') {
|
|
117
|
-
// Tenta extrair SQL do argumento (pode ser outra função)
|
|
118
|
-
return getDefaultSQL({ default: arg });
|
|
119
|
-
}
|
|
120
|
-
return String(arg);
|
|
121
|
-
}).join(', ');
|
|
122
|
-
return `${name}(${argsSql})`;
|
|
123
|
-
}
|
|
124
|
-
// 2.3 Objetos com toString personalizado (evita [object Object])
|
|
125
142
|
if (obj.toString && obj.toString !== Object.prototype.toString) {
|
|
126
143
|
const str = obj.toString();
|
|
127
144
|
if (str !== '[object Object]')
|
|
128
145
|
return str;
|
|
129
146
|
}
|
|
130
|
-
// 2.4 Tenta obter value (para objetos simples como { value: ... })
|
|
131
147
|
if (obj.value !== undefined) {
|
|
132
148
|
return getDefaultSQL({ default: obj.value });
|
|
133
149
|
}
|
|
@@ -135,8 +151,8 @@ function restoreBackupSQL(opts) {
|
|
|
135
151
|
// Fallback seguro
|
|
136
152
|
return 'NULL';
|
|
137
153
|
}
|
|
138
|
-
// Filtra campos escalares
|
|
139
|
-
const filter = (field) =>
|
|
154
|
+
// Filtra campos escalares (incluindo os gerados, para preservar IDs e defaults)
|
|
155
|
+
const filter = (field) => field.kind === "scalar";
|
|
140
156
|
const fields = opts.model.fields.filter(filter);
|
|
141
157
|
// Lista de colunas para o INSERT (na mesma ordem dos campos)
|
|
142
158
|
const columns = fields.map((f) => ` ${(0, escape_1.oid)(f.name)}`).join(", ");
|
|
@@ -154,7 +170,7 @@ function restoreBackupSQL(opts) {
|
|
|
154
170
|
`.trim();
|
|
155
171
|
})
|
|
156
172
|
.join(",\n");
|
|
157
|
-
//
|
|
173
|
+
// DEFAULT_QUERY com CTE que inclui o JSON original e aplica CASE para cada coluna
|
|
158
174
|
const DEFAULT_QUERY = `
|
|
159
175
|
WITH __source AS (
|
|
160
176
|
SELECT
|
|
@@ -262,7 +278,7 @@ function restoreBackupSQL(opts) {
|
|
|
262
278
|
$$;
|
|
263
279
|
`.split("\n")
|
|
264
280
|
.filter((line) => line.trim() !== "")
|
|
265
|
-
.map((line) => line.replace(/^ {6}/, ""))
|
|
281
|
+
.map((line) => line.replace(/^ {6}/, ""))
|
|
266
282
|
.join("\n");
|
|
267
283
|
return {
|
|
268
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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"}
|
|
@@ -94,48 +94,64 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
94
94
|
|
|
95
95
|
// Função auxiliar para extrair a expressão SQL do default de um campo
|
|
96
96
|
function getDefaultSQL(field: FieldOption): string {
|
|
97
|
+
// Se o campo não tem default, retorna NULL
|
|
98
|
+
if (!field.hasDefaultValue || field.default === undefined || field.default === null) {
|
|
99
|
+
return 'NULL';
|
|
100
|
+
}
|
|
101
|
+
|
|
97
102
|
const def = field.default;
|
|
98
|
-
if (def === undefined || def === null) return 'NULL';
|
|
99
103
|
|
|
100
|
-
//
|
|
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
|
|
101
142
|
if (typeof def === 'string') return def;
|
|
102
143
|
if (typeof def === 'number') return String(def);
|
|
103
144
|
if (typeof def === 'boolean') return def ? 'true' : 'false';
|
|
104
145
|
|
|
105
|
-
//
|
|
146
|
+
// Outros objetos (ex: { sql: ... }) – tenta extrair propriedades comuns
|
|
106
147
|
if (typeof def === 'object') {
|
|
107
|
-
const obj = def as any;
|
|
108
|
-
|
|
109
|
-
// 2.1 Propriedades comuns em alguns dialetos (sql, expression)
|
|
148
|
+
const obj = def as any;
|
|
110
149
|
if (obj.sql && typeof obj.sql === 'string') return obj.sql;
|
|
111
150
|
if (obj.expression && typeof obj.expression === 'string') return obj.expression;
|
|
112
|
-
|
|
113
|
-
// 2.2 Função representada por { name, args } (padrão Prisma para funções como nextval, now)
|
|
114
|
-
if (obj.name && typeof obj.name === 'string') {
|
|
115
|
-
const name = obj.name;
|
|
116
|
-
const args = Array.isArray(obj.args) ? obj.args : [];
|
|
117
|
-
// Converte cada argumento recursivamente
|
|
118
|
-
const argsSql = args.map((arg: any) => {
|
|
119
|
-
if (arg === null || arg === undefined) return 'NULL';
|
|
120
|
-
if (typeof arg === 'string') return arg;
|
|
121
|
-
if (typeof arg === 'number') return String(arg);
|
|
122
|
-
if (typeof arg === 'boolean') return arg ? 'true' : 'false';
|
|
123
|
-
if (typeof arg === 'object') {
|
|
124
|
-
// Tenta extrair SQL do argumento (pode ser outra função)
|
|
125
|
-
return getDefaultSQL({ default: arg } as FieldOption);
|
|
126
|
-
}
|
|
127
|
-
return String(arg);
|
|
128
|
-
}).join(', ');
|
|
129
|
-
return `${name}(${argsSql})`;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// 2.3 Objetos com toString personalizado (evita [object Object])
|
|
133
151
|
if (obj.toString && obj.toString !== Object.prototype.toString) {
|
|
134
152
|
const str = obj.toString();
|
|
135
153
|
if (str !== '[object Object]') return str;
|
|
136
154
|
}
|
|
137
|
-
|
|
138
|
-
// 2.4 Tenta obter value (para objetos simples como { value: ... })
|
|
139
155
|
if (obj.value !== undefined) {
|
|
140
156
|
return getDefaultSQL({ default: obj.value } as FieldOption);
|
|
141
157
|
}
|
|
@@ -145,9 +161,8 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
145
161
|
return 'NULL';
|
|
146
162
|
}
|
|
147
163
|
|
|
148
|
-
// Filtra campos escalares
|
|
149
|
-
const filter = (field: FieldOption) =>
|
|
150
|
-
!field.isGenerated && field.kind === "scalar";
|
|
164
|
+
// Filtra campos escalares (incluindo os gerados, para preservar IDs e defaults)
|
|
165
|
+
const filter = (field: FieldOption) => field.kind === "scalar";
|
|
151
166
|
const fields = opts.model.fields.filter(filter);
|
|
152
167
|
|
|
153
168
|
// Lista de colunas para o INSERT (na mesma ordem dos campos)
|
|
@@ -168,7 +183,7 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
168
183
|
})
|
|
169
184
|
.join(",\n");
|
|
170
185
|
|
|
171
|
-
//
|
|
186
|
+
// DEFAULT_QUERY com CTE que inclui o JSON original e aplica CASE para cada coluna
|
|
172
187
|
const DEFAULT_QUERY = `
|
|
173
188
|
WITH __source AS (
|
|
174
189
|
SELECT
|
|
@@ -293,7 +308,7 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
293
308
|
$$;
|
|
294
309
|
`.split("\n")
|
|
295
310
|
.filter((line) => line.trim() !== "")
|
|
296
|
-
.map((line) => line.replace(/^ {6}/, ""))
|
|
311
|
+
.map((line) => line.replace(/^ {6}/, ""))
|
|
297
312
|
.join("\n");
|
|
298
313
|
|
|
299
314
|
return {
|