@prisma-psm/pg 1.0.0
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/.idea/modules.xml +8 -0
- package/.idea/php.xml +9 -0
- package/.idea/psm-pg.iml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/workspace.xml +73 -0
- package/LICENSE +201 -0
- package/README.md +2 -0
- package/package.json +21 -0
- package/src/index.d.ts +4 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +21 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +23 -0
- package/src/migration/migrate.d.ts +3 -0
- package/src/migration/migrate.d.ts.map +1 -0
- package/src/migration/migrate.js +8 -0
- package/src/migration/migrate.js.map +1 -0
- package/src/migration/migrate.ts +7 -0
- package/src/migration/test.d.ts +3 -0
- package/src/migration/test.d.ts.map +1 -0
- package/src/migration/test.js +40 -0
- package/src/migration/test.js.map +1 -0
- package/src/migration/test.ts +43 -0
- package/src/parser/backup/engine.d.ts +16 -0
- package/src/parser/backup/engine.d.ts.map +1 -0
- package/src/parser/backup/engine.js +176 -0
- package/src/parser/backup/engine.js.map +1 -0
- package/src/parser/backup/engine.ts +201 -0
- package/src/parser/backup/index.d.ts +7 -0
- package/src/parser/backup/index.d.ts.map +1 -0
- package/src/parser/backup/index.js +29 -0
- package/src/parser/backup/index.js.map +1 -0
- package/src/parser/backup/index.ts +30 -0
- package/src/parser/constraint.d.ts +22 -0
- package/src/parser/constraint.d.ts.map +1 -0
- package/src/parser/constraint.js +160 -0
- package/src/parser/constraint.js.map +1 -0
- package/src/parser/constraint.ts +161 -0
- package/src/parser/def.d.ts +37 -0
- package/src/parser/def.d.ts.map +1 -0
- package/src/parser/def.js +4 -0
- package/src/parser/def.js.map +1 -0
- package/src/parser/def.ts +22 -0
- package/src/parser/dependencies.d.ts +3 -0
- package/src/parser/dependencies.d.ts.map +1 -0
- package/src/parser/dependencies.js +39 -0
- package/src/parser/dependencies.js.map +1 -0
- package/src/parser/dependencies.ts +43 -0
- package/src/parser/indexes.d.ts +13 -0
- package/src/parser/indexes.d.ts.map +1 -0
- package/src/parser/indexes.js +54 -0
- package/src/parser/indexes.js.map +1 -0
- package/src/parser/indexes.ts +57 -0
- package/src/parser/modelParser.d.ts +19 -0
- package/src/parser/modelParser.d.ts.map +1 -0
- package/src/parser/modelParser.js +24 -0
- package/src/parser/modelParser.js.map +1 -0
- package/src/parser/modelParser.ts +30 -0
- package/src/parser/notice.d.ts +2 -0
- package/src/parser/notice.d.ts.map +1 -0
- package/src/parser/notice.js +8 -0
- package/src/parser/notice.js.map +1 -0
- package/src/parser/notice.ts +5 -0
- package/src/parser/parser.d.ts +15 -0
- package/src/parser/parser.d.ts.map +1 -0
- package/src/parser/parser.js +72 -0
- package/src/parser/parser.js.map +1 -0
- package/src/parser/parser.ts +87 -0
- package/src/parser/shadow.d.ts +4 -0
- package/src/parser/shadow.d.ts.map +1 -0
- package/src/parser/shadow.js +21 -0
- package/src/parser/shadow.js.map +1 -0
- package/src/parser/shadow.ts +20 -0
- package/src/parser/sql.d.ts +3 -0
- package/src/parser/sql.d.ts.map +1 -0
- package/src/parser/sql.js +67 -0
- package/src/parser/sql.js.map +1 -0
- package/src/parser/sql.ts +74 -0
- package/src/parser/sys.d.ts +11 -0
- package/src/parser/sys.d.ts.map +1 -0
- package/src/parser/sys.js +54 -0
- package/src/parser/sys.js.map +1 -0
- package/src/parser/sys.ts +56 -0
- package/src/parser/table/engine.d.ts +7 -0
- package/src/parser/table/engine.d.ts.map +1 -0
- package/src/parser/table/engine.js +103 -0
- package/src/parser/table/engine.js.map +1 -0
- package/src/parser/table/engine.ts +106 -0
- package/src/parser/table/field.d.ts +8 -0
- package/src/parser/table/field.d.ts.map +1 -0
- package/src/parser/table/field.js +25 -0
- package/src/parser/table/field.js.map +1 -0
- package/src/parser/table/field.ts +22 -0
- package/src/parser/table.d.ts +8 -0
- package/src/parser/table.d.ts.map +1 -0
- package/src/parser/table.js +31 -0
- package/src/parser/table.js.map +1 -0
- package/src/parser/table.ts +30 -0
- package/src/utils/escape.d.ts +3 -0
- package/src/utils/escape.d.ts.map +1 -0
- package/src/utils/escape.js +59 -0
- package/src/utils/escape.js.map +1 -0
- package/src/utils/escape.ts +36 -0
- package/src/utils/sha.d.ts +2 -0
- package/src/utils/sha.d.ts.map +1 -0
- package/src/utils/sha.js +33 -0
- package/src/utils/sha.js.map +1 -0
- package/src/utils/sha.ts +6 -0
- package/src/utils/tabs.d.ts +2 -0
- package/src/utils/tabs.d.ts.map +1 -0
- package/src/utils/tabs.js +16 -0
- package/src/utils/tabs.js.map +1 -0
- package/src/utils/tabs.ts +14 -0
- package/tsconfig.json +81 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {PostgresParserOptions} from "./def";
|
|
2
|
+
import {oid} from "../utils/escape";
|
|
3
|
+
import {ModelOptions} from "@prisma-psm/core";
|
|
4
|
+
import {notice} from "./notice";
|
|
5
|
+
|
|
6
|
+
export type ConstraintsOptions = {
|
|
7
|
+
model:ModelOptions,
|
|
8
|
+
name:string
|
|
9
|
+
key: "primary"|"foreign"|"unique"|"check"|"index",
|
|
10
|
+
fields?:string[],
|
|
11
|
+
refModel?:string
|
|
12
|
+
algorithm?:string
|
|
13
|
+
refModelSchema?:string
|
|
14
|
+
refFields?:string[],
|
|
15
|
+
parser:PostgresParserOptions
|
|
16
|
+
}
|
|
17
|
+
function resolver(parser:PostgresParserOptions, opts:ConstraintsOptions){
|
|
18
|
+
const name = oid( opts.name );
|
|
19
|
+
let refFields:string = "";
|
|
20
|
+
let fieldsId:string = "";
|
|
21
|
+
let refModel:string = "";
|
|
22
|
+
let refModelSchema:string = "";
|
|
23
|
+
|
|
24
|
+
if(!!opts.refFields?.length) refFields = opts.refFields.map( oid ).join(`, `);
|
|
25
|
+
if(!!opts.fields?.length) fieldsId = opts.fields.map(oid).join(`, `);
|
|
26
|
+
if(!!opts.refModel) refModel = oid(opts.refModel);
|
|
27
|
+
if(!!opts.refModelSchema) refModelSchema = oid(opts.refModelSchema);
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
create_primary:()=> ([
|
|
31
|
+
notice( `CREATE PRIMARY KEY ${name} OF MODEL ${opts.model.model}`),
|
|
32
|
+
`alter table if exists ${oid(parser.shadow)}.${oid(opts.model.temp)} add constraint ${name} primary key (${fieldsId});`,
|
|
33
|
+
notice( `CREATE PRIMARY KEY ${name} OF MODEL ${opts.model.model} OK!`),
|
|
34
|
+
]),
|
|
35
|
+
create_foreign:()=> ([
|
|
36
|
+
notice( `CREATE FOREIGN KEY ${name} OF MODEL ${ opts.model.model}`),
|
|
37
|
+
`alter table if exists ${oid(parser.shadow)}.${oid(opts.model.temp)} add constraint ${name} foreign key (${fieldsId}) references ${refModelSchema}.${refModel} ( ${refFields} );`,
|
|
38
|
+
notice( `CREATE FOREIGN KEY ${name} OF MODEL ${ opts.model.model} OK!`),
|
|
39
|
+
]),
|
|
40
|
+
create_unique:()=> ([
|
|
41
|
+
notice( `CREATE UNIQUE KEY ${name} OF MODEL ${ opts.model.model}`),
|
|
42
|
+
`alter table if exists ${oid(parser.shadow)}.${oid(opts.model.temp)} add constraint ${name} unique (${fieldsId});`,
|
|
43
|
+
notice( `CREATE UNIQUE KEY ${name} OF MODEL ${ opts.model.model} OK!`),
|
|
44
|
+
]),
|
|
45
|
+
drop:()=> ([
|
|
46
|
+
notice( `DROP CONSTRAINT KEY ${name} OF MODEL ${ opts.model.model}`),
|
|
47
|
+
`alter table if exists ${oid(opts.model.schema)}.${oid(opts.model.name)} drop constraint if exists ${name};`,
|
|
48
|
+
notice( `DROP CONSTRAINT KEY ${name} OF MODEL ${ opts.model.model} OK!`),
|
|
49
|
+
]),
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function constraintsParser( model:ModelOptions, parser:PostgresParserOptions ) {
|
|
54
|
+
const primary = (()=>{
|
|
55
|
+
const index = model.indexes.find( value => value.type === "id" );
|
|
56
|
+
if( !index ) return;
|
|
57
|
+
let localField = index.fields?.map( next => {
|
|
58
|
+
const field = model.fields.find( value1 => value1.name === next.name );
|
|
59
|
+
if( !field ) return next.name;
|
|
60
|
+
return field.dbName||field.name;
|
|
61
|
+
});
|
|
62
|
+
let name = index.dbName || index.name;
|
|
63
|
+
if( !name ) name = `pk_${model.name}_${ localField.join( "_" )}_by_prisma`;
|
|
64
|
+
return resolver(parser, {
|
|
65
|
+
key: "primary",
|
|
66
|
+
fields: localField,
|
|
67
|
+
name: name,
|
|
68
|
+
parser: parser,
|
|
69
|
+
model: model,
|
|
70
|
+
});
|
|
71
|
+
})()
|
|
72
|
+
|
|
73
|
+
const unique = model.indexes.filter( field => {
|
|
74
|
+
return field.type === "unique";
|
|
75
|
+
}).map( index => {
|
|
76
|
+
let localField = index.fields?.map( next => {
|
|
77
|
+
const field = model.fields.find( value1 => value1.name === next.name );
|
|
78
|
+
if( !field ) return next.name;
|
|
79
|
+
return field.dbName||field.name;
|
|
80
|
+
});
|
|
81
|
+
let name = index.dbName || index.name;
|
|
82
|
+
if( !name ) name = `uk_${model.name}_${ localField.join( "_" )}_by_prisma`;
|
|
83
|
+
return resolver(parser, {
|
|
84
|
+
key: "unique",
|
|
85
|
+
fields: localField,
|
|
86
|
+
name: name,
|
|
87
|
+
parser: parser,
|
|
88
|
+
model: model
|
|
89
|
+
});
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
const foreign = model.fields.filter( field => {
|
|
93
|
+
return field.kind === "object"
|
|
94
|
+
&& !!field.relationName
|
|
95
|
+
&& field.relationFromFields?.length
|
|
96
|
+
&& field.relationToFields?.length
|
|
97
|
+
;
|
|
98
|
+
}).map( next => {
|
|
99
|
+
let localField = next.relationFromFields?.map( name => {
|
|
100
|
+
const field = model.fields.find( value1 => value1.name === name );
|
|
101
|
+
if( !field ) return name;
|
|
102
|
+
return field.dbName||field.name;
|
|
103
|
+
});
|
|
104
|
+
let reference = parser.models.find( value => value.model === next.type );
|
|
105
|
+
if( reference?.psm?.view ) return null;
|
|
106
|
+
let referenceField = next.relationToFields?.map( name => {
|
|
107
|
+
if( !reference ) return name;
|
|
108
|
+
const field = reference.fields.find( value1 => value1.name === name );
|
|
109
|
+
if( !field ) return name;
|
|
110
|
+
return field.dbName||field.name;
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
let name = next.relationName;
|
|
116
|
+
let ref = reference?.name;
|
|
117
|
+
if( !name ) name = `fk_${model.name}_${referenceField?.join("_")}_to_${ref}_by_prisma`;
|
|
118
|
+
|
|
119
|
+
return resolver( parser, {
|
|
120
|
+
key: "foreign",
|
|
121
|
+
fields: localField,
|
|
122
|
+
name: name,
|
|
123
|
+
refModel: ref,
|
|
124
|
+
refFields: referenceField,
|
|
125
|
+
refModelSchema: reference?.schema || "public",
|
|
126
|
+
parser: parser,
|
|
127
|
+
model: model,
|
|
128
|
+
});
|
|
129
|
+
}).filter( value => !!value );
|
|
130
|
+
|
|
131
|
+
const maps = ( list:any, key:string):string[]=>{
|
|
132
|
+
const fk:string[] = [];
|
|
133
|
+
if( !list ) return[];
|
|
134
|
+
list.forEach( value => {
|
|
135
|
+
if( !value ) return;
|
|
136
|
+
fk.push( ...value?.[key]());
|
|
137
|
+
});
|
|
138
|
+
return fk;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
create_primary_keys: ()=> {
|
|
142
|
+
return maps( [primary], "create_primary" );
|
|
143
|
+
},
|
|
144
|
+
drop_primary_keys: ()=> {
|
|
145
|
+
return maps( [primary], "drop" );
|
|
146
|
+
|
|
147
|
+
},
|
|
148
|
+
create_foreign_key: ()=> {
|
|
149
|
+
return maps( foreign, "create_foreign" );
|
|
150
|
+
},
|
|
151
|
+
drop_foreign_key: ()=> {
|
|
152
|
+
return maps( foreign, "drop" );
|
|
153
|
+
},
|
|
154
|
+
create_unique_key: ()=> {
|
|
155
|
+
return maps( unique, "create_unique" );
|
|
156
|
+
},
|
|
157
|
+
drop_unique_key: ()=> {
|
|
158
|
+
return maps( unique, "drop" );
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ModelOptions, PSMParserOptions } from "@prisma-psm/core";
|
|
2
|
+
export interface PostgresParserOptions extends PSMParserOptions {
|
|
3
|
+
mode: "check" | "migrate";
|
|
4
|
+
}
|
|
5
|
+
export interface ParseModelResult {
|
|
6
|
+
model: ModelOptions;
|
|
7
|
+
backup: {
|
|
8
|
+
create: string[];
|
|
9
|
+
restore: string[];
|
|
10
|
+
restore_serial: string[];
|
|
11
|
+
clean: string[];
|
|
12
|
+
};
|
|
13
|
+
table: {
|
|
14
|
+
create: string[];
|
|
15
|
+
drop: string[];
|
|
16
|
+
allocate: string[];
|
|
17
|
+
};
|
|
18
|
+
primary: {
|
|
19
|
+
create: string[];
|
|
20
|
+
drop: string[];
|
|
21
|
+
};
|
|
22
|
+
foreign: {
|
|
23
|
+
create: string[];
|
|
24
|
+
drop: string[];
|
|
25
|
+
};
|
|
26
|
+
unique: {
|
|
27
|
+
create: string[];
|
|
28
|
+
drop: string[];
|
|
29
|
+
};
|
|
30
|
+
indexes: {
|
|
31
|
+
create: string[];
|
|
32
|
+
drop: string[];
|
|
33
|
+
};
|
|
34
|
+
dependencies: string[];
|
|
35
|
+
dependents: string[];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=def.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"def.d.ts","sourceRoot":"","sources":["def.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAEhE,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC3D,IAAI,EAAC,OAAO,GAAC,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE;QAAE,MAAM,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAC;QAAC,cAAc,EAAC,MAAM,EAAE,CAAC;QAAC,KAAK,EAAC,MAAM,EAAE,CAAA;KAAE,CAAA;IACtF,KAAK,EAAE;QAAE,MAAM,EAAC,MAAM,EAAE,CAAC;QAAC,IAAI,EAAC,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAC,MAAM,EAAE,CAAA;KAAE,CAAA;IAC5D,OAAO,EAAE;QAAG,MAAM,EAAC,MAAM,EAAE,CAAC;QAAC,IAAI,EAAC,MAAM,EAAE,CAAA;KAAE,CAAA;IAC5C,OAAO,EAAE;QAAE,MAAM,EAAC,MAAM,EAAE,CAAC;QAAC,IAAI,EAAC,MAAM,EAAE,CAAA;KAAE,CAAA;IAC3C,MAAM,EAAE;QAAE,MAAM,EAAC,MAAM,EAAE,CAAC;QAAC,IAAI,EAAC,MAAM,EAAE,CAAA;KAAE,CAAA;IAC1C,OAAO,EAAE;QAAE,MAAM,EAAC,MAAM,EAAE,CAAC;QAAC,IAAI,EAAC,MAAM,EAAE,CAAA;KAAE,CAAA;IAC3C,YAAY,EAAC,MAAM,EAAE,CAAA;IACrB,UAAU,EAAC,MAAM,EAAE,CAAA;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"def.js","sourceRoot":"","sources":["def.ts"],"names":[],"mappings":";AAAA,mCAAmC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//filename: src/libs/migrate/def.ts
|
|
2
|
+
|
|
3
|
+
import {ModelOptions, PSMParserOptions} from "@prisma-psm/core";
|
|
4
|
+
|
|
5
|
+
export interface PostgresParserOptions extends PSMParserOptions{
|
|
6
|
+
mode:"check"|"migrate"
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface ParseModelResult {
|
|
10
|
+
model: ModelOptions,
|
|
11
|
+
backup: { create:string[], restore:string[], restore_serial:string[], clean:string[] }
|
|
12
|
+
table: { create:string[], drop:string[], allocate:string[] }
|
|
13
|
+
primary: { create:string[], drop:string[] }
|
|
14
|
+
foreign: { create:string[], drop:string[] }
|
|
15
|
+
unique: { create:string[], drop:string[] }
|
|
16
|
+
indexes: { create:string[], drop:string[] }
|
|
17
|
+
dependencies:string[]
|
|
18
|
+
dependents:string[]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,OAAO,CAAC;AAEvC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAuC/D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reverseDependencies = reverseDependencies;
|
|
4
|
+
function reverseDependencies(response) {
|
|
5
|
+
// Mapeia modelos por nome
|
|
6
|
+
const modelMap = new Map();
|
|
7
|
+
for (const item of response) {
|
|
8
|
+
item.dependents = []; // limpa dependents antes de começar
|
|
9
|
+
modelMap.set(item.model.model, item);
|
|
10
|
+
}
|
|
11
|
+
// Cria mapa auxiliar para armazenar dependentes indiretos (cache)
|
|
12
|
+
const dependentsMap = new Map();
|
|
13
|
+
// Função recursiva para coletar todos os dependentes de um modelo
|
|
14
|
+
function collectDependents(target, visited = new Set()) {
|
|
15
|
+
if (dependentsMap.has(target)) {
|
|
16
|
+
return dependentsMap.get(target);
|
|
17
|
+
}
|
|
18
|
+
const dependents = new Set();
|
|
19
|
+
for (const model of response) {
|
|
20
|
+
if (model.dependencies.includes(target)) {
|
|
21
|
+
if (!visited.has(model.model.model)) {
|
|
22
|
+
dependents.add(model.model.model);
|
|
23
|
+
visited.add(model.model.model);
|
|
24
|
+
const indirect = collectDependents(model.model.model, new Set(visited));
|
|
25
|
+
for (const d of indirect)
|
|
26
|
+
dependents.add(d);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
dependentsMap.set(target, dependents);
|
|
31
|
+
return dependents;
|
|
32
|
+
}
|
|
33
|
+
// Aplica para cada modelo
|
|
34
|
+
for (const item of response) {
|
|
35
|
+
const allDependents = collectDependents(item.model.model);
|
|
36
|
+
item.dependents = [...allDependents];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["dependencies.ts"],"names":[],"mappings":";;AAEA,kDAuCC;AAvCD,SAAgB,mBAAmB,CAAC,QAA4B;IAC5D,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,oCAAoC;QAC1D,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,kEAAkE;IAClE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IAErD,kEAAkE;IAClE,SAAS,iBAAiB,CAAC,MAAc,EAAE,UAAU,IAAI,GAAG,EAAU;QAClE,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QACtC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC/B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxE,KAAK,MAAM,CAAC,IAAI,QAAQ;wBAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IACzC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {ParseModelResult} from "./def";
|
|
2
|
+
|
|
3
|
+
export function reverseDependencies(response: ParseModelResult[]) {
|
|
4
|
+
// Mapeia modelos por nome
|
|
5
|
+
const modelMap = new Map<string, ParseModelResult>();
|
|
6
|
+
for (const item of response) {
|
|
7
|
+
item.dependents = []; // limpa dependents antes de começar
|
|
8
|
+
modelMap.set(item.model.model, item);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Cria mapa auxiliar para armazenar dependentes indiretos (cache)
|
|
12
|
+
const dependentsMap = new Map<string, Set<string>>();
|
|
13
|
+
|
|
14
|
+
// Função recursiva para coletar todos os dependentes de um modelo
|
|
15
|
+
function collectDependents(target: string, visited = new Set<string>()): Set<string> {
|
|
16
|
+
if (dependentsMap.has(target)) {
|
|
17
|
+
return dependentsMap.get(target)!;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const dependents = new Set<string>();
|
|
21
|
+
|
|
22
|
+
for (const model of response) {
|
|
23
|
+
if (model.dependencies.includes(target)) {
|
|
24
|
+
if (!visited.has(model.model.model)) {
|
|
25
|
+
dependents.add(model.model.model);
|
|
26
|
+
visited.add(model.model.model);
|
|
27
|
+
const indirect = collectDependents(model.model.model, new Set(visited));
|
|
28
|
+
for (const d of indirect) dependents.add(d);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
dependentsMap.set(target, dependents);
|
|
34
|
+
return dependents;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Aplica para cada modelo
|
|
38
|
+
for (const item of response) {
|
|
39
|
+
const allDependents = collectDependents(item.model.model);
|
|
40
|
+
item.dependents = [...allDependents];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PostgresParserOptions } from "./def";
|
|
2
|
+
import { ModelOptions } from "@prisma-psm/core";
|
|
3
|
+
export type IndexesOptions = {
|
|
4
|
+
model: ModelOptions;
|
|
5
|
+
name: string;
|
|
6
|
+
fields?: string[];
|
|
7
|
+
algorithm?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function indexesParser(model: ModelOptions, parser: PostgresParserOptions): {
|
|
10
|
+
create_index_key: () => string[];
|
|
11
|
+
drop_index_key: () => string[];
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=indexes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["indexes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG;IACzB,KAAK,EAAC,YAAY,CAAC;IACnB,IAAI,EAAC,MAAM,CAAA;IACX,MAAM,CAAC,EAAC,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAC,MAAM,CAAA;CACpB,CAAA;AAgBD,wBAAgB,aAAa,CAAE,KAAK,EAAC,YAAY,EAAE,MAAM,EAAC,qBAAqB;;;EA+B9E"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.indexesParser = indexesParser;
|
|
4
|
+
const escape_1 = require("../utils/escape");
|
|
5
|
+
function resolver(parser, opts) {
|
|
6
|
+
var _a;
|
|
7
|
+
const name = (0, escape_1.oid)(opts.name);
|
|
8
|
+
let fieldsId = "";
|
|
9
|
+
let algorithm = "";
|
|
10
|
+
if (!!((_a = opts.fields) === null || _a === void 0 ? void 0 : _a.length))
|
|
11
|
+
fieldsId = opts.fields.map(escape_1.oid).join(`, `);
|
|
12
|
+
if (!!opts.algorithm)
|
|
13
|
+
algorithm = ` using ${opts.algorithm}`;
|
|
14
|
+
return {
|
|
15
|
+
create_index: () => `create index ${name} on ${(0, escape_1.oid)(parser.shadow)}.${(0, escape_1.oid)(opts.model.temp)}${algorithm} (${fieldsId});`,
|
|
16
|
+
drop_index: () => `drop index if exists ${name};`,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function indexesParser(model, parser) {
|
|
20
|
+
const indexes = model.indexes.filter(field => {
|
|
21
|
+
return field.type === "normal";
|
|
22
|
+
}).map(index => {
|
|
23
|
+
var _a;
|
|
24
|
+
let localField = (_a = index.fields) === null || _a === void 0 ? void 0 : _a.map(next => {
|
|
25
|
+
const field = model.fields.find(value1 => value1.name === next.name);
|
|
26
|
+
if (!field)
|
|
27
|
+
return next.name;
|
|
28
|
+
return field.dbName || field.name;
|
|
29
|
+
});
|
|
30
|
+
let name = index.dbName || index.name;
|
|
31
|
+
let schema = model.schema || "public";
|
|
32
|
+
if (!name)
|
|
33
|
+
name = `idx_${schema}_${model.name}_${localField.join("_")}_by_prisma`;
|
|
34
|
+
return resolver(parser, {
|
|
35
|
+
algorithm: index.algorithm,
|
|
36
|
+
fields: localField,
|
|
37
|
+
name: name,
|
|
38
|
+
model: model,
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
return {
|
|
42
|
+
create_index_key: () => {
|
|
43
|
+
if (!indexes)
|
|
44
|
+
return [];
|
|
45
|
+
return indexes.map(value => value.create_index());
|
|
46
|
+
},
|
|
47
|
+
drop_index_key: () => {
|
|
48
|
+
if (!indexes)
|
|
49
|
+
return [];
|
|
50
|
+
return indexes.map(value => value.drop_index());
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=indexes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexes.js","sourceRoot":"","sources":["indexes.ts"],"names":[],"mappings":";;AAyBA,sCA+BC;AAvDD,4CAAoC;AAUpC,SAAS,QAAQ,CAAC,MAA4B,EAAE,IAAmB;;IAC/D,MAAM,IAAI,GAAG,IAAA,YAAG,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC;IAC9B,IAAI,QAAQ,GAAU,EAAE,CAAC;IACzB,IAAI,SAAS,GAAU,EAAE,CAAC;IAE1B,IAAG,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA;QAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,IAAG,CAAC,CAAC,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;IAE5D,OAAO;QACH,YAAY,EAAC,GAAE,EAAE,CAAC,gBAAgB,IAAI,OAAO,IAAA,YAAG,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAA,YAAG,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,QAAQ,IAAI;QACpH,UAAU,EAAC,GAAE,EAAE,CAAC,wBAAwB,IAAI,GAAG;KAClD,CAAA;AACL,CAAC;AAED,SAAgB,aAAa,CAAE,KAAkB,EAAE,MAA4B;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE;QAC1C,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IACnC,CAAC,CAAC,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE;;QACZ,IAAI,UAAU,GAAG,MAAA,KAAK,CAAC,MAAM,0CAAE,GAAG,CAAE,IAAI,CAAC,EAAE;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAE,CAAC;YACvE,IAAI,CAAC,KAAK;gBAAG,OAAO,IAAI,CAAC,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC,MAAM,IAAE,KAAK,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;QACtC,IAAI,MAAM,GAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC;QACvC,IAAI,CAAC,IAAI;YAAG,IAAI,GAAG,OAAO,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAE,GAAG,CAAC,YAAY,CAAC;QACpF,OAAO,QAAQ,CAAC,MAAM,EAAE;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;IACP,CAAC,CAAC,CAAA;IAEF,OAAO;QACH,gBAAgB,EAAE,GAAE,EAAE;YAClB,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,cAAc,EAAE,GAAE,EAAE;YAChB,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;KAEJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {PostgresParserOptions} from "./def";
|
|
2
|
+
import {oid} from "../utils/escape";
|
|
3
|
+
import {ModelOptions} from "@prisma-psm/core";
|
|
4
|
+
|
|
5
|
+
export type IndexesOptions = {
|
|
6
|
+
model:ModelOptions,
|
|
7
|
+
name:string
|
|
8
|
+
fields?:string[],
|
|
9
|
+
algorithm?:string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function resolver(parser:PostgresParserOptions, opts:IndexesOptions){
|
|
13
|
+
const name = oid( opts.name );
|
|
14
|
+
let fieldsId:string = "";
|
|
15
|
+
let algorithm:string = "";
|
|
16
|
+
|
|
17
|
+
if(!!opts.fields?.length) fieldsId = opts.fields.map(oid).join(`, `);
|
|
18
|
+
if(!!opts.algorithm) algorithm = ` using ${opts.algorithm}`;
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
create_index:()=> `create index ${name} on ${oid(parser.shadow)}.${oid(opts.model.temp)}${algorithm} (${fieldsId});`,
|
|
22
|
+
drop_index:()=> `drop index if exists ${name};`,
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function indexesParser( model:ModelOptions, parser:PostgresParserOptions ) {
|
|
27
|
+
const indexes = model.indexes.filter( field => {
|
|
28
|
+
return field.type === "normal";
|
|
29
|
+
}).map( index => {
|
|
30
|
+
let localField = index.fields?.map( next => {
|
|
31
|
+
const field = model.fields.find( value1 => value1.name === next.name );
|
|
32
|
+
if( !field ) return next.name;
|
|
33
|
+
return field.dbName||field.name;
|
|
34
|
+
});
|
|
35
|
+
let name = index.dbName || index.name;
|
|
36
|
+
let schema = model.schema || "public";
|
|
37
|
+
if( !name ) name = `idx_${schema}_${model.name}_${localField.join( "_")}_by_prisma`;
|
|
38
|
+
return resolver(parser, {
|
|
39
|
+
algorithm: index.algorithm,
|
|
40
|
+
fields: localField,
|
|
41
|
+
name: name,
|
|
42
|
+
model: model,
|
|
43
|
+
});
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
create_index_key: ()=> {
|
|
48
|
+
if( !indexes) return [];
|
|
49
|
+
return indexes.map( value => value.create_index());
|
|
50
|
+
},
|
|
51
|
+
drop_index_key: ()=> {
|
|
52
|
+
if( !indexes) return [];
|
|
53
|
+
return indexes.map( value => value.drop_index());
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ModelOptions } from "@prisma-psm/core";
|
|
2
|
+
import { PostgresParserOptions } from "./def";
|
|
3
|
+
export declare function modelParser(model: ModelOptions, parser: PostgresParserOptions): {
|
|
4
|
+
create_primary_keys: () => string[];
|
|
5
|
+
drop_primary_keys: () => string[];
|
|
6
|
+
create_foreign_key: () => string[];
|
|
7
|
+
drop_foreign_key: () => string[];
|
|
8
|
+
create_unique_key: () => string[];
|
|
9
|
+
drop_unique_key: () => string[];
|
|
10
|
+
create_index_key: () => string[];
|
|
11
|
+
drop_index_key: () => string[];
|
|
12
|
+
drop_table: () => string[];
|
|
13
|
+
allocate_table: () => string[];
|
|
14
|
+
create_table: () => string[];
|
|
15
|
+
restore_backup: () => string[];
|
|
16
|
+
restore_serial: () => string[];
|
|
17
|
+
depends: () => string[];
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=modelParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelParser.d.ts","sourceRoot":"","sources":["modelParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,OAAO,CAAC;AAM5C,wBAAgB,WAAW,CAAE,KAAK,EAAC,YAAY,EAAE,MAAM,EAAC,qBAAqB;;;;;;;;;;;;;;;EAsB5E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.modelParser = modelParser;
|
|
4
|
+
const table_1 = require("./table");
|
|
5
|
+
const indexes_1 = require("./indexes");
|
|
6
|
+
const constraint_1 = require("./constraint");
|
|
7
|
+
const backup_1 = require("./backup");
|
|
8
|
+
function modelParser(model, parser) {
|
|
9
|
+
const depends = model.fields.filter(field => {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
return field.kind === "object"
|
|
12
|
+
&& !!field.relationName
|
|
13
|
+
&& ((_a = field.relationFromFields) === null || _a === void 0 ? void 0 : _a.length)
|
|
14
|
+
&& ((_b = field.relationToFields) === null || _b === void 0 ? void 0 : _b.length);
|
|
15
|
+
}).map(next => {
|
|
16
|
+
return next.type;
|
|
17
|
+
});
|
|
18
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({ depends: () => {
|
|
19
|
+
if (!depends)
|
|
20
|
+
return [];
|
|
21
|
+
return depends;
|
|
22
|
+
} }, (0, backup_1.backupParser)(model, parser)), (0, table_1.tableParser)(model, parser)), (0, indexes_1.indexesParser)(model, parser)), (0, constraint_1.constraintsParser)(model, parser));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=modelParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelParser.js","sourceRoot":"","sources":["modelParser.ts"],"names":[],"mappings":";;AAOA,kCAsBC;AA3BD,mCAAoC;AACpC,uCAAwC;AACxC,6CAA+C;AAC/C,qCAAsC;AAEtC,SAAgB,WAAW,CAAE,KAAkB,EAAE,MAA4B;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE;;QACzC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;eACvB,CAAC,CAAC,KAAK,CAAC,YAAY;gBACpB,MAAA,KAAK,CAAC,kBAAkB,0CAAE,MAAM,CAAA;gBAChC,MAAA,KAAK,CAAC,gBAAgB,0CAAE,MAAM,CAAA,CAChC;IACT,CAAC,CAAC,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,CAAA;IACF,iEAGI,OAAO,EAAE,GAAE,EAAE;YACT,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;QACnB,CAAC,IACG,IAAA,qBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,GAC3B,IAAA,mBAAW,EAAE,KAAK,EAAE,MAAM,CAAC,GAC3B,IAAA,uBAAa,EAAE,KAAK,EAAE,MAAM,CAAC,GAC7B,IAAA,8BAAiB,EAAE,KAAK,EAAE,MAAM,CAAE,EACzC;AACL,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {ModelOptions} from "@prisma-psm/core";
|
|
2
|
+
import {PostgresParserOptions} from "./def";
|
|
3
|
+
import {tableParser} from "./table";
|
|
4
|
+
import {indexesParser} from "./indexes";
|
|
5
|
+
import {constraintsParser} from "./constraint";
|
|
6
|
+
import {backupParser} from "./backup";
|
|
7
|
+
|
|
8
|
+
export function modelParser( model:ModelOptions, parser:PostgresParserOptions ){
|
|
9
|
+
const depends = model.fields.filter( field => {
|
|
10
|
+
return field.kind === "object"
|
|
11
|
+
&& !!field.relationName
|
|
12
|
+
&& field.relationFromFields?.length
|
|
13
|
+
&& field.relationToFields?.length
|
|
14
|
+
;
|
|
15
|
+
}).map( next => {
|
|
16
|
+
return next.type;
|
|
17
|
+
})
|
|
18
|
+
return {
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
depends: ()=> {
|
|
22
|
+
if( !depends) return [];
|
|
23
|
+
return depends;
|
|
24
|
+
},
|
|
25
|
+
... backupParser(model, parser),
|
|
26
|
+
... tableParser( model, parser),
|
|
27
|
+
... indexesParser( model, parser),
|
|
28
|
+
... constraintsParser( model, parser )
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notice.d.ts","sourceRoot":"","sources":["notice.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,OAAO,EAAC,MAAM,UAEpC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.notice = notice;
|
|
4
|
+
const escape_1 = require("../utils/escape");
|
|
5
|
+
function notice(message) {
|
|
6
|
+
return `do $$ begin raise notice '%', ${(0, escape_1.val)(message)}; end $$;`;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notice.js","sourceRoot":"","sources":["notice.ts"],"names":[],"mappings":";;AAEA,wBAEC;AAJD,4CAAoC;AAEpC,SAAgB,MAAM,CAAC,OAAc;IACjC,OAAO,iCAAiC,IAAA,YAAG,EAAE,OAAO,CAAE,WAAW,CAAA;AACrE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ParseModelResult, PostgresParserOptions } from "./def";
|
|
2
|
+
export interface ParserResult {
|
|
3
|
+
options: PostgresParserOptions;
|
|
4
|
+
models: string[];
|
|
5
|
+
core: string[];
|
|
6
|
+
shadow: {
|
|
7
|
+
create: string[];
|
|
8
|
+
drop: string[];
|
|
9
|
+
};
|
|
10
|
+
parsed: {
|
|
11
|
+
[p: string]: ParseModelResult;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function parser(opts: PostgresParserOptions): ParserResult;
|
|
15
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["parser.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,OAAO,CAAC;AAG9D,MAAM,WAAW,YAAY;IACzB,OAAO,EAAC,qBAAqB,CAAA;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE;QAAE,MAAM,EAAC,MAAM,EAAE,CAAC;QAAE,IAAI,EAAC,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5C,MAAM,EAAE;QACJ,CAAC,CAAC,EAAC,MAAM,GAAE,gBAAgB,CAAA;KAC9B,CAAA;CACJ;AAED,wBAAgB,MAAM,CAAE,IAAI,EAAC,qBAAqB,gBAkEjD"}
|