@prisma-psm/pg 1.0.48 → 1.0.51
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,CAmPA;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"}
|
|
@@ -79,8 +79,72 @@ function restoreBackupSQL(opts) {
|
|
|
79
79
|
const temp = (0, escape_1.oid)(opts.model.temp);
|
|
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
|
-
//
|
|
83
|
-
|
|
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
|
+
function getDefaultSQL(field) {
|
|
85
|
+
// Caso especial para campos gerados (ex: serial) – devem usar a sequência da shadow table
|
|
86
|
+
if (field.isGenerated && field.kind === "scalar") {
|
|
87
|
+
// Remove as aspas duplas dos identificadores para usar em pg_get_serial_sequence
|
|
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)`;
|
|
92
|
+
}
|
|
93
|
+
const def = field.default;
|
|
94
|
+
if (def === undefined || def === null)
|
|
95
|
+
return 'NULL';
|
|
96
|
+
// Tipos primitivos
|
|
97
|
+
if (typeof def === 'string')
|
|
98
|
+
return def;
|
|
99
|
+
if (typeof def === 'number')
|
|
100
|
+
return String(def);
|
|
101
|
+
if (typeof def === 'boolean')
|
|
102
|
+
return def ? 'true' : 'false';
|
|
103
|
+
// Objetos
|
|
104
|
+
if (typeof def === 'object') {
|
|
105
|
+
const obj = def;
|
|
106
|
+
// Propriedades comuns em alguns dialetos
|
|
107
|
+
if (obj.sql && typeof obj.sql === 'string')
|
|
108
|
+
return obj.sql;
|
|
109
|
+
if (obj.expression && typeof obj.expression === 'string')
|
|
110
|
+
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
|
+
if (obj.toString && obj.toString !== Object.prototype.toString) {
|
|
134
|
+
const str = obj.toString();
|
|
135
|
+
if (str !== '[object Object]')
|
|
136
|
+
return str;
|
|
137
|
+
}
|
|
138
|
+
// Tenta extrair de uma propriedade 'value'
|
|
139
|
+
if (obj.value !== undefined) {
|
|
140
|
+
return getDefaultSQL({ default: obj.value });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Fallback seguro
|
|
144
|
+
return 'NULL';
|
|
145
|
+
}
|
|
146
|
+
// Filtra campos escalares (incluindo os gerados, para preservar IDs)
|
|
147
|
+
const filter = (field) => field.kind === "scalar";
|
|
84
148
|
const fields = opts.model.fields.filter(filter);
|
|
85
149
|
// Lista de colunas para o INSERT (na mesma ordem dos campos)
|
|
86
150
|
const columns = fields.map((f) => ` ${(0, escape_1.oid)(f.name)}`).join(", ");
|
|
@@ -89,8 +153,7 @@ function restoreBackupSQL(opts) {
|
|
|
89
153
|
.map((field) => {
|
|
90
154
|
const colName = (0, escape_1.oid)(field.dbName || field.name);
|
|
91
155
|
const colNameLit = (0, escape_1.lit)(field.dbName || field.name);
|
|
92
|
-
|
|
93
|
-
const defaultValue = field.default !== undefined ? field.default : "NULL";
|
|
156
|
+
const defaultValue = getDefaultSQL(field);
|
|
94
157
|
return `
|
|
95
158
|
CASE
|
|
96
159
|
WHEN original_json ? ${colNameLit} THEN s.${colName}
|
|
@@ -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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"}
|
|
@@ -92,9 +92,70 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
92
92
|
|
|
93
93
|
if (opts.model.psm?.backup?.skip) return null as any;
|
|
94
94
|
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
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
|
+
function getDefaultSQL(field: FieldOption): string {
|
|
98
|
+
// Caso especial para campos gerados (ex: serial) – devem usar a sequência da shadow table
|
|
99
|
+
if (field.isGenerated && field.kind === "scalar") {
|
|
100
|
+
// Remove as aspas duplas dos identificadores para usar em pg_get_serial_sequence
|
|
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)`;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const def = field.default;
|
|
108
|
+
if (def === undefined || def === null) return 'NULL';
|
|
109
|
+
|
|
110
|
+
// Tipos primitivos
|
|
111
|
+
if (typeof def === 'string') return def;
|
|
112
|
+
if (typeof def === 'number') return String(def);
|
|
113
|
+
if (typeof def === 'boolean') return def ? 'true' : 'false';
|
|
114
|
+
|
|
115
|
+
// Objetos
|
|
116
|
+
if (typeof def === 'object') {
|
|
117
|
+
const obj = def as any;
|
|
118
|
+
|
|
119
|
+
// Propriedades comuns em alguns dialetos
|
|
120
|
+
if (obj.sql && typeof obj.sql === 'string') return obj.sql;
|
|
121
|
+
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
|
+
if (obj.toString && obj.toString !== Object.prototype.toString) {
|
|
143
|
+
const str = obj.toString();
|
|
144
|
+
if (str !== '[object Object]') return str;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Tenta extrair de uma propriedade 'value'
|
|
148
|
+
if (obj.value !== undefined) {
|
|
149
|
+
return getDefaultSQL({ default: obj.value } as FieldOption);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Fallback seguro
|
|
154
|
+
return 'NULL';
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Filtra campos escalares (incluindo os gerados, para preservar IDs)
|
|
158
|
+
const filter = (field: FieldOption) => field.kind === "scalar";
|
|
98
159
|
const fields = opts.model.fields.filter(filter);
|
|
99
160
|
|
|
100
161
|
// Lista de colunas para o INSERT (na mesma ordem dos campos)
|
|
@@ -105,8 +166,7 @@ export function restoreBackupSQL(opts: RestoreOptions): {
|
|
|
105
166
|
.map((field) => {
|
|
106
167
|
const colName = oid(field.dbName || field.name);
|
|
107
168
|
const colNameLit = lit(field.dbName || field.name);
|
|
108
|
-
|
|
109
|
-
const defaultValue = field.default !== undefined ? field.default : "NULL";
|
|
169
|
+
const defaultValue = getDefaultSQL(field);
|
|
110
170
|
return `
|
|
111
171
|
CASE
|
|
112
172
|
WHEN original_json ? ${colNameLit} THEN s.${colName}
|