@prisma-psm/pg 1.0.6 → 1.0.8
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 +1 -1
- package/src/index.js +2 -2
- package/src/index.ts +6 -4
- package/src/parser/backup/engine.d.ts.map +1 -1
- package/src/parser/backup/engine.js +36 -21
- package/src/parser/backup/engine.js.map +1 -1
- package/src/parser/backup/engine.ts +36 -16
- package/src/parser/notice.js +1 -1
- package/src/parser/notice.ts +2 -2
- package/src/parser/parser.d.ts +1 -0
- package/src/parser/parser.d.ts.map +1 -1
- package/src/parser/parser.js +3 -1
- package/src/parser/parser.js.map +1 -1
- package/src/parser/parser.ts +12 -2
- package/src/parser/schama.d.ts +3 -0
- package/src/parser/schama.d.ts.map +1 -0
- package/src/parser/schama.js +16 -0
- package/src/parser/schama.js.map +1 -0
- package/src/parser/schama.ts +14 -0
- package/src/parser/sql.d.ts.map +1 -1
- package/src/parser/sql.js +3 -0
- package/src/parser/sql.js.map +1 -1
- package/src/parser/sql.ts +7 -2
- package/src/parser/sys.js +2 -2
- package/src/parser/sys.ts +3 -3
- package/src/parser/table/engine.js +2 -2
- package/src/parser/table/engine.ts +3 -3
- package/src/sql/catalog-maps.d.ts +1 -0
- package/src/sql/catalog-maps.d.ts.map +1 -0
- package/src/sql/catalog-maps.js +283 -0
- package/src/sql/catalog-maps.js.map +1 -0
- package/src/sql/catalog-maps.ts +281 -0
- package/src/sql/sql-builder.d.ts +1 -0
- package/src/sql/sql-builder.d.ts.map +1 -0
- package/src/sql/sql-builder.js +256 -0
- package/src/sql/sql-builder.js.map +1 -0
- package/src/sql/sql-builder.ts +254 -0
- package/src/utils/escape.d.ts +5 -1
- package/src/utils/escape.d.ts.map +1 -1
- package/src/utils/escape.js +328 -4
- package/src/utils/escape.js.map +1 -1
- package/src/utils/escape.ts +331 -4
- package/src/utils/script-util.d.ts +26 -0
- package/src/utils/script-util.d.ts.map +1 -0
- package/src/utils/script-util.js +95 -0
- package/src/utils/script-util.js.map +1 -0
- package/src/utils/script-util.ts +105 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import {Escape, lit, oid, SQL} from "../utils/escape";
|
|
3
|
+
// import {ScriptLine, scriptUtil} from "../utils/script-util";
|
|
4
|
+
// import {QueryBuilderResult} from "@prisma-psm/core";
|
|
5
|
+
//
|
|
6
|
+
// export function literalEscape ( value:any){
|
|
7
|
+
// let textValue;
|
|
8
|
+
// if( value === null || value === undefined) textValue = "null";
|
|
9
|
+
// else if( typeof value === "string") textValue = lit( value );
|
|
10
|
+
// else if( typeof value === "number") textValue = value;
|
|
11
|
+
// else if( typeof value === "boolean") textValue = value;
|
|
12
|
+
// else if( typeof value === "object") textValue = lit( JSON.stringify( value ));
|
|
13
|
+
// return textValue;
|
|
14
|
+
// }
|
|
15
|
+
//
|
|
16
|
+
//
|
|
17
|
+
//
|
|
18
|
+
// export type PreparedQuery = {
|
|
19
|
+
// query:string,
|
|
20
|
+
// values:any[],
|
|
21
|
+
// line:ScriptLine
|
|
22
|
+
// }
|
|
23
|
+
//
|
|
24
|
+
// const CHECK = Symbol("check" );
|
|
25
|
+
//
|
|
26
|
+
//
|
|
27
|
+
// export class PostgresQueryBuilderResult implements QueryBuilderResult{
|
|
28
|
+
// escaped:any[];
|
|
29
|
+
// piece:boolean
|
|
30
|
+
// template:string[];
|
|
31
|
+
// private _query:string;
|
|
32
|
+
// public line:ScriptLine;
|
|
33
|
+
//
|
|
34
|
+
// constructor(template:TemplateStringsArray|string|string[], escaped:any[], line:ScriptLine ) {
|
|
35
|
+
// if( !line || !line?.filename ) throw new Error( `Script line is not declared` );
|
|
36
|
+
// if( line.filename.startsWith("node:internal")){
|
|
37
|
+
// throw new Error( `Invalid script line is internal capture`);
|
|
38
|
+
// }
|
|
39
|
+
//
|
|
40
|
+
// if( !escaped ) escaped = [];
|
|
41
|
+
// if( !template ) template = [];
|
|
42
|
+
// this.template = [];
|
|
43
|
+
// this.escaped = [];
|
|
44
|
+
//
|
|
45
|
+
// let hasTemplate = !!template?.length;
|
|
46
|
+
// let hasValue = !!escaped?.length;
|
|
47
|
+
// let hasCheck = !!arguments[2] || arguments[2] === CHECK;
|
|
48
|
+
// if( !hasTemplate && !hasCheck ) throw new Error( "Invalid Builder" );
|
|
49
|
+
//
|
|
50
|
+
//
|
|
51
|
+
// if( typeof template === "string" ){
|
|
52
|
+
// this._query = template;
|
|
53
|
+
// } else {
|
|
54
|
+
// this.template.push( ...template);
|
|
55
|
+
// }
|
|
56
|
+
// this.escaped.push( ...escaped );
|
|
57
|
+
// this.line = line;
|
|
58
|
+
// }
|
|
59
|
+
//
|
|
60
|
+
// get builderParts(){
|
|
61
|
+
// if( this.pieces.length+1 !== this.template.length ) throw new Error( "Inconsistency template builder" );
|
|
62
|
+
//
|
|
63
|
+
// let list:any[] = [];
|
|
64
|
+
// this.template.forEach( (value, index) => {
|
|
65
|
+
// list.push( value );
|
|
66
|
+
// if( index < this.pieces.length ) list.push( this.pieces[ index ]);
|
|
67
|
+
// });
|
|
68
|
+
// return list;
|
|
69
|
+
// }
|
|
70
|
+
//
|
|
71
|
+
//
|
|
72
|
+
// parameterizedQuery():PreparedQuery{
|
|
73
|
+
// if( !!this._query ){
|
|
74
|
+
// let values = this.values.map( value => {
|
|
75
|
+
// if( value instanceof Escape ) return value.value;
|
|
76
|
+
// else return value;
|
|
77
|
+
// })
|
|
78
|
+
// return {
|
|
79
|
+
// query: this._query,
|
|
80
|
+
// values: values,
|
|
81
|
+
// line: this.line
|
|
82
|
+
// };
|
|
83
|
+
// } else {
|
|
84
|
+
// let argIndex = 1;
|
|
85
|
+
// let queryParts = this.builderParts.map( (value, index) => {
|
|
86
|
+
// if( (index %2) === 0 ){
|
|
87
|
+
// return value;
|
|
88
|
+
// }
|
|
89
|
+
//
|
|
90
|
+
// if( value instanceof Escape && value.mode === "type" && value.asArray){
|
|
91
|
+
// return '$'+(argIndex++)+"::"+value.type+"[]";
|
|
92
|
+
// } else if( value instanceof Escape && value.mode === "type" ){
|
|
93
|
+
// return '$'+(argIndex++)+"::"+value.type;
|
|
94
|
+
// }
|
|
95
|
+
//
|
|
96
|
+
// if( value instanceof Escape && value.mode === "identifier" ){
|
|
97
|
+
// return oid( value.value );
|
|
98
|
+
// }
|
|
99
|
+
//
|
|
100
|
+
// if( value === null || value === undefined){
|
|
101
|
+
// return "null";
|
|
102
|
+
// } else {
|
|
103
|
+
// return '$'+(argIndex++);
|
|
104
|
+
// }
|
|
105
|
+
// });
|
|
106
|
+
//
|
|
107
|
+
// let values = this.values.filter( value => {
|
|
108
|
+
// if( value instanceof Escape && value.mode === "identifier" ) return;
|
|
109
|
+
// else return value !== null && value !== undefined;
|
|
110
|
+
// }).map( value => {
|
|
111
|
+
// if( value instanceof Escape ) {
|
|
112
|
+
// if( value.value === null || value.value === undefined ) return null;
|
|
113
|
+
// if( value.type === "jsonb" && typeof value.value === "object" ) return JSON.stringify( value.value );
|
|
114
|
+
// if( value.type === "json" && typeof value.value === "object" ) return JSON.stringify( value.value );
|
|
115
|
+
// return value.value;
|
|
116
|
+
// }
|
|
117
|
+
// else return value;
|
|
118
|
+
// })
|
|
119
|
+
//
|
|
120
|
+
// return {
|
|
121
|
+
// query: queryParts.join(""),
|
|
122
|
+
// values: values,
|
|
123
|
+
// line: this.line
|
|
124
|
+
// }
|
|
125
|
+
// }
|
|
126
|
+
// }
|
|
127
|
+
//
|
|
128
|
+
// add( sqlPart:string, sqlValue:any ){
|
|
129
|
+
// this.template.push( sqlPart );
|
|
130
|
+
// this.values.push( sqlValue );
|
|
131
|
+
// }
|
|
132
|
+
// noParameterizedQuery():PreparedQuery{
|
|
133
|
+
// if( !!this._query ){
|
|
134
|
+
// return {
|
|
135
|
+
// line: this.line,
|
|
136
|
+
// query: this._query,
|
|
137
|
+
// values: null
|
|
138
|
+
// };
|
|
139
|
+
// } else {
|
|
140
|
+
// let queryParts = this.builderParts.map( (value, index) => {
|
|
141
|
+
// let _scape;
|
|
142
|
+
// if ((index % 2) === 0) {
|
|
143
|
+
// return value;
|
|
144
|
+
//
|
|
145
|
+
// }else if( value instanceof Escape && value.mode === "literal") {
|
|
146
|
+
// return lit( value.value?.toString?.()||null )
|
|
147
|
+
// } else if( value instanceof Escape && (value.mode === "unsafe" || value.mode === "keyword")){
|
|
148
|
+
// _scape = value.value;
|
|
149
|
+
// } else if( value instanceof Escape && value.mode === "type" ){
|
|
150
|
+
// let preEscape = value.literal();
|
|
151
|
+
// let textValue = literalEscape( preEscape );
|
|
152
|
+
// // let textValue = value.literal();
|
|
153
|
+
// let _as = "";
|
|
154
|
+
// if( value.type && value.type.length && value.asArray ) _as = `::${value.type}[]`;
|
|
155
|
+
// else if( value.type && value.type.length ) _as = `::${value.type}`;
|
|
156
|
+
// _scape = textValue+_as;
|
|
157
|
+
// } else if( value instanceof Escape && value.mode === "identifier" ){
|
|
158
|
+
// _scape= oid( value.value );
|
|
159
|
+
// } else {
|
|
160
|
+
// _scape = literalEscape( value )
|
|
161
|
+
// }return _scape;
|
|
162
|
+
// });
|
|
163
|
+
//
|
|
164
|
+
// let str = queryParts.join("");
|
|
165
|
+
// return {
|
|
166
|
+
// query: str,
|
|
167
|
+
// values: null,
|
|
168
|
+
// line: this.line
|
|
169
|
+
// }
|
|
170
|
+
// }
|
|
171
|
+
// }
|
|
172
|
+
//
|
|
173
|
+
//
|
|
174
|
+
// push( ...builders:QueryBuilderResult[] ){
|
|
175
|
+
// let _push = ( outsideBuilder:QueryBuilderResult)=>{
|
|
176
|
+
// let checkOutsideBuilder = this.checkSupportedJoin( outsideBuilder );
|
|
177
|
+
// if( !checkOutsideBuilder ) throw new Error( "Unsupported outside builder" );
|
|
178
|
+
// let checkSelfBuilder = this.checkSupportedJoin( this );
|
|
179
|
+
// if( !checkSelfBuilder ) {
|
|
180
|
+
// throw new Error("Current builder no support join");
|
|
181
|
+
// }
|
|
182
|
+
//
|
|
183
|
+
// if( !checkSelfBuilder.hasTemplate ) {
|
|
184
|
+
// this.template = [];
|
|
185
|
+
// if( checkSelfBuilder.hasQuery ){
|
|
186
|
+
// this.template.push( this._query );
|
|
187
|
+
// this._query = null;
|
|
188
|
+
// }
|
|
189
|
+
// }
|
|
190
|
+
//
|
|
191
|
+
// let selfTemplate = this.template;
|
|
192
|
+
// let outsideTemplate = outsideBuilder.template;
|
|
193
|
+
// if( !checkOutsideBuilder.hasTemplate ){
|
|
194
|
+
// outsideTemplate = [ outsideBuilder._query ];
|
|
195
|
+
// }
|
|
196
|
+
//
|
|
197
|
+
// outsideTemplate.forEach((element, elementIndex) => {
|
|
198
|
+
// if(selfTemplate.length > 0 && elementIndex===0 ){
|
|
199
|
+
// let lastElementResult = selfTemplate[selfTemplate.length - 1];
|
|
200
|
+
// lastElementResult = lastElementResult.trimEnd();
|
|
201
|
+
// if( lastElementResult[lastElementResult.length-1] !== ";" && !outsideBuilder.piece ) lastElementResult+= ";"
|
|
202
|
+
// selfTemplate[selfTemplate.length - 1] = lastElementResult+ "\n\n"+ element.trimStart();
|
|
203
|
+
// return
|
|
204
|
+
// }
|
|
205
|
+
// selfTemplate.push( element );
|
|
206
|
+
//
|
|
207
|
+
// });
|
|
208
|
+
// this.values.push( ... outsideBuilder.values );
|
|
209
|
+
// }
|
|
210
|
+
// builders.forEach( value => _push( value ) );
|
|
211
|
+
// }
|
|
212
|
+
//
|
|
213
|
+
// private checkSupportedJoin( builder:PostgresQueryBuilderResult ){
|
|
214
|
+
// let hasTemplate = !!builder.template && !!builder.template.length;
|
|
215
|
+
// let hasQuery = !!builder._query && !!builder._query.length;
|
|
216
|
+
// let hasValues = !!builder.values && !!builder.values.length && builder.values.length > 0
|
|
217
|
+
// if( !hasTemplate && hasValues ) return false;
|
|
218
|
+
// return { hasTemplate, hasQuery, hasValues };
|
|
219
|
+
//
|
|
220
|
+
// }
|
|
221
|
+
// }
|
|
222
|
+
// export function sql( sqlTemplate:TemplateStringsArray, ...values:any[]):QueryBuilderResult{
|
|
223
|
+
// let line = scriptUtil.lineOf( 1 );
|
|
224
|
+
// return new PostgresQueryBuilderResult(sqlTemplate, values.map(value => {
|
|
225
|
+
// if (value instanceof Escape) return value
|
|
226
|
+
// else return SQL.any(value)
|
|
227
|
+
// }), line);
|
|
228
|
+
// }
|
|
229
|
+
//
|
|
230
|
+
//
|
|
231
|
+
// sql.joins = ( ...builders:QueryBuilderResult[] )=>{
|
|
232
|
+
// let builder = builders.shift();
|
|
233
|
+
// if( !!builder && builders.length ) builder.push( ...builders );
|
|
234
|
+
// return builder;
|
|
235
|
+
// }
|
|
236
|
+
//
|
|
237
|
+
// sql.join = ( builders:QueryBuilderResult[] )=>{
|
|
238
|
+
// return sql.joins( ...(builders||[]) );
|
|
239
|
+
// }
|
|
240
|
+
//
|
|
241
|
+
// export function noAutoEscapeSql( sqlTemplate:TemplateStringsArray, ...values):PostgresQueryBuilderResult{
|
|
242
|
+
// let line = scriptUtil.lineOf( 1 );
|
|
243
|
+
// return new PostgresQueryBuilderResult( sqlTemplate, values, line );
|
|
244
|
+
// }
|
|
245
|
+
//
|
|
246
|
+
// export function queryJoin( ...prepared:QueryBuilderResult[] ):PostgresQueryBuilderResult {
|
|
247
|
+
// if( !prepared || !prepared.length ) throw new Error( "Query join is empty!");
|
|
248
|
+
// let superList = prepared;
|
|
249
|
+
// // @ts-ignore
|
|
250
|
+
// let joins = new QueryBuilderResult(undefined,undefined, prepared[ 0 ].line );
|
|
251
|
+
// superList.forEach( builder => {
|
|
252
|
+
// joins.push( builder );
|
|
253
|
+
// });
|
|
254
|
+
// return joins;
|
|
255
|
+
// }
|
|
256
|
+
//# sourceMappingURL=sql-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["sql-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
// import {Escape, lit, oid, SQL} from "../utils/escape";
|
|
2
|
+
// import {ScriptLine, scriptUtil} from "../utils/script-util";
|
|
3
|
+
// import {QueryBuilderResult} from "@prisma-psm/core";
|
|
4
|
+
//
|
|
5
|
+
// export function literalEscape ( value:any){
|
|
6
|
+
// let textValue;
|
|
7
|
+
// if( value === null || value === undefined) textValue = "null";
|
|
8
|
+
// else if( typeof value === "string") textValue = lit( value );
|
|
9
|
+
// else if( typeof value === "number") textValue = value;
|
|
10
|
+
// else if( typeof value === "boolean") textValue = value;
|
|
11
|
+
// else if( typeof value === "object") textValue = lit( JSON.stringify( value ));
|
|
12
|
+
// return textValue;
|
|
13
|
+
// }
|
|
14
|
+
//
|
|
15
|
+
//
|
|
16
|
+
//
|
|
17
|
+
// export type PreparedQuery = {
|
|
18
|
+
// query:string,
|
|
19
|
+
// values:any[],
|
|
20
|
+
// line:ScriptLine
|
|
21
|
+
// }
|
|
22
|
+
//
|
|
23
|
+
// const CHECK = Symbol("check" );
|
|
24
|
+
//
|
|
25
|
+
//
|
|
26
|
+
// export class PostgresQueryBuilderResult implements QueryBuilderResult{
|
|
27
|
+
// escaped:any[];
|
|
28
|
+
// piece:boolean
|
|
29
|
+
// template:string[];
|
|
30
|
+
// private _query:string;
|
|
31
|
+
// public line:ScriptLine;
|
|
32
|
+
//
|
|
33
|
+
// constructor(template:TemplateStringsArray|string|string[], escaped:any[], line:ScriptLine ) {
|
|
34
|
+
// if( !line || !line?.filename ) throw new Error( `Script line is not declared` );
|
|
35
|
+
// if( line.filename.startsWith("node:internal")){
|
|
36
|
+
// throw new Error( `Invalid script line is internal capture`);
|
|
37
|
+
// }
|
|
38
|
+
//
|
|
39
|
+
// if( !escaped ) escaped = [];
|
|
40
|
+
// if( !template ) template = [];
|
|
41
|
+
// this.template = [];
|
|
42
|
+
// this.escaped = [];
|
|
43
|
+
//
|
|
44
|
+
// let hasTemplate = !!template?.length;
|
|
45
|
+
// let hasValue = !!escaped?.length;
|
|
46
|
+
// let hasCheck = !!arguments[2] || arguments[2] === CHECK;
|
|
47
|
+
// if( !hasTemplate && !hasCheck ) throw new Error( "Invalid Builder" );
|
|
48
|
+
//
|
|
49
|
+
//
|
|
50
|
+
// if( typeof template === "string" ){
|
|
51
|
+
// this._query = template;
|
|
52
|
+
// } else {
|
|
53
|
+
// this.template.push( ...template);
|
|
54
|
+
// }
|
|
55
|
+
// this.escaped.push( ...escaped );
|
|
56
|
+
// this.line = line;
|
|
57
|
+
// }
|
|
58
|
+
//
|
|
59
|
+
// get builderParts(){
|
|
60
|
+
// if( this.pieces.length+1 !== this.template.length ) throw new Error( "Inconsistency template builder" );
|
|
61
|
+
//
|
|
62
|
+
// let list:any[] = [];
|
|
63
|
+
// this.template.forEach( (value, index) => {
|
|
64
|
+
// list.push( value );
|
|
65
|
+
// if( index < this.pieces.length ) list.push( this.pieces[ index ]);
|
|
66
|
+
// });
|
|
67
|
+
// return list;
|
|
68
|
+
// }
|
|
69
|
+
//
|
|
70
|
+
//
|
|
71
|
+
// parameterizedQuery():PreparedQuery{
|
|
72
|
+
// if( !!this._query ){
|
|
73
|
+
// let values = this.values.map( value => {
|
|
74
|
+
// if( value instanceof Escape ) return value.value;
|
|
75
|
+
// else return value;
|
|
76
|
+
// })
|
|
77
|
+
// return {
|
|
78
|
+
// query: this._query,
|
|
79
|
+
// values: values,
|
|
80
|
+
// line: this.line
|
|
81
|
+
// };
|
|
82
|
+
// } else {
|
|
83
|
+
// let argIndex = 1;
|
|
84
|
+
// let queryParts = this.builderParts.map( (value, index) => {
|
|
85
|
+
// if( (index %2) === 0 ){
|
|
86
|
+
// return value;
|
|
87
|
+
// }
|
|
88
|
+
//
|
|
89
|
+
// if( value instanceof Escape && value.mode === "type" && value.asArray){
|
|
90
|
+
// return '$'+(argIndex++)+"::"+value.type+"[]";
|
|
91
|
+
// } else if( value instanceof Escape && value.mode === "type" ){
|
|
92
|
+
// return '$'+(argIndex++)+"::"+value.type;
|
|
93
|
+
// }
|
|
94
|
+
//
|
|
95
|
+
// if( value instanceof Escape && value.mode === "identifier" ){
|
|
96
|
+
// return oid( value.value );
|
|
97
|
+
// }
|
|
98
|
+
//
|
|
99
|
+
// if( value === null || value === undefined){
|
|
100
|
+
// return "null";
|
|
101
|
+
// } else {
|
|
102
|
+
// return '$'+(argIndex++);
|
|
103
|
+
// }
|
|
104
|
+
// });
|
|
105
|
+
//
|
|
106
|
+
// let values = this.values.filter( value => {
|
|
107
|
+
// if( value instanceof Escape && value.mode === "identifier" ) return;
|
|
108
|
+
// else return value !== null && value !== undefined;
|
|
109
|
+
// }).map( value => {
|
|
110
|
+
// if( value instanceof Escape ) {
|
|
111
|
+
// if( value.value === null || value.value === undefined ) return null;
|
|
112
|
+
// if( value.type === "jsonb" && typeof value.value === "object" ) return JSON.stringify( value.value );
|
|
113
|
+
// if( value.type === "json" && typeof value.value === "object" ) return JSON.stringify( value.value );
|
|
114
|
+
// return value.value;
|
|
115
|
+
// }
|
|
116
|
+
// else return value;
|
|
117
|
+
// })
|
|
118
|
+
//
|
|
119
|
+
// return {
|
|
120
|
+
// query: queryParts.join(""),
|
|
121
|
+
// values: values,
|
|
122
|
+
// line: this.line
|
|
123
|
+
// }
|
|
124
|
+
// }
|
|
125
|
+
// }
|
|
126
|
+
//
|
|
127
|
+
// add( sqlPart:string, sqlValue:any ){
|
|
128
|
+
// this.template.push( sqlPart );
|
|
129
|
+
// this.values.push( sqlValue );
|
|
130
|
+
// }
|
|
131
|
+
// noParameterizedQuery():PreparedQuery{
|
|
132
|
+
// if( !!this._query ){
|
|
133
|
+
// return {
|
|
134
|
+
// line: this.line,
|
|
135
|
+
// query: this._query,
|
|
136
|
+
// values: null
|
|
137
|
+
// };
|
|
138
|
+
// } else {
|
|
139
|
+
// let queryParts = this.builderParts.map( (value, index) => {
|
|
140
|
+
// let _scape;
|
|
141
|
+
// if ((index % 2) === 0) {
|
|
142
|
+
// return value;
|
|
143
|
+
//
|
|
144
|
+
// }else if( value instanceof Escape && value.mode === "literal") {
|
|
145
|
+
// return lit( value.value?.toString?.()||null )
|
|
146
|
+
// } else if( value instanceof Escape && (value.mode === "unsafe" || value.mode === "keyword")){
|
|
147
|
+
// _scape = value.value;
|
|
148
|
+
// } else if( value instanceof Escape && value.mode === "type" ){
|
|
149
|
+
// let preEscape = value.literal();
|
|
150
|
+
// let textValue = literalEscape( preEscape );
|
|
151
|
+
// // let textValue = value.literal();
|
|
152
|
+
// let _as = "";
|
|
153
|
+
// if( value.type && value.type.length && value.asArray ) _as = `::${value.type}[]`;
|
|
154
|
+
// else if( value.type && value.type.length ) _as = `::${value.type}`;
|
|
155
|
+
// _scape = textValue+_as;
|
|
156
|
+
// } else if( value instanceof Escape && value.mode === "identifier" ){
|
|
157
|
+
// _scape= oid( value.value );
|
|
158
|
+
// } else {
|
|
159
|
+
// _scape = literalEscape( value )
|
|
160
|
+
// }return _scape;
|
|
161
|
+
// });
|
|
162
|
+
//
|
|
163
|
+
// let str = queryParts.join("");
|
|
164
|
+
// return {
|
|
165
|
+
// query: str,
|
|
166
|
+
// values: null,
|
|
167
|
+
// line: this.line
|
|
168
|
+
// }
|
|
169
|
+
// }
|
|
170
|
+
// }
|
|
171
|
+
//
|
|
172
|
+
//
|
|
173
|
+
// push( ...builders:QueryBuilderResult[] ){
|
|
174
|
+
// let _push = ( outsideBuilder:QueryBuilderResult)=>{
|
|
175
|
+
// let checkOutsideBuilder = this.checkSupportedJoin( outsideBuilder );
|
|
176
|
+
// if( !checkOutsideBuilder ) throw new Error( "Unsupported outside builder" );
|
|
177
|
+
// let checkSelfBuilder = this.checkSupportedJoin( this );
|
|
178
|
+
// if( !checkSelfBuilder ) {
|
|
179
|
+
// throw new Error("Current builder no support join");
|
|
180
|
+
// }
|
|
181
|
+
//
|
|
182
|
+
// if( !checkSelfBuilder.hasTemplate ) {
|
|
183
|
+
// this.template = [];
|
|
184
|
+
// if( checkSelfBuilder.hasQuery ){
|
|
185
|
+
// this.template.push( this._query );
|
|
186
|
+
// this._query = null;
|
|
187
|
+
// }
|
|
188
|
+
// }
|
|
189
|
+
//
|
|
190
|
+
// let selfTemplate = this.template;
|
|
191
|
+
// let outsideTemplate = outsideBuilder.template;
|
|
192
|
+
// if( !checkOutsideBuilder.hasTemplate ){
|
|
193
|
+
// outsideTemplate = [ outsideBuilder._query ];
|
|
194
|
+
// }
|
|
195
|
+
//
|
|
196
|
+
// outsideTemplate.forEach((element, elementIndex) => {
|
|
197
|
+
// if(selfTemplate.length > 0 && elementIndex===0 ){
|
|
198
|
+
// let lastElementResult = selfTemplate[selfTemplate.length - 1];
|
|
199
|
+
// lastElementResult = lastElementResult.trimEnd();
|
|
200
|
+
// if( lastElementResult[lastElementResult.length-1] !== ";" && !outsideBuilder.piece ) lastElementResult+= ";"
|
|
201
|
+
// selfTemplate[selfTemplate.length - 1] = lastElementResult+ "\n\n"+ element.trimStart();
|
|
202
|
+
// return
|
|
203
|
+
// }
|
|
204
|
+
// selfTemplate.push( element );
|
|
205
|
+
//
|
|
206
|
+
// });
|
|
207
|
+
// this.values.push( ... outsideBuilder.values );
|
|
208
|
+
// }
|
|
209
|
+
// builders.forEach( value => _push( value ) );
|
|
210
|
+
// }
|
|
211
|
+
//
|
|
212
|
+
// private checkSupportedJoin( builder:PostgresQueryBuilderResult ){
|
|
213
|
+
// let hasTemplate = !!builder.template && !!builder.template.length;
|
|
214
|
+
// let hasQuery = !!builder._query && !!builder._query.length;
|
|
215
|
+
// let hasValues = !!builder.values && !!builder.values.length && builder.values.length > 0
|
|
216
|
+
// if( !hasTemplate && hasValues ) return false;
|
|
217
|
+
// return { hasTemplate, hasQuery, hasValues };
|
|
218
|
+
//
|
|
219
|
+
// }
|
|
220
|
+
// }
|
|
221
|
+
// export function sql( sqlTemplate:TemplateStringsArray, ...values:any[]):QueryBuilderResult{
|
|
222
|
+
// let line = scriptUtil.lineOf( 1 );
|
|
223
|
+
// return new PostgresQueryBuilderResult(sqlTemplate, values.map(value => {
|
|
224
|
+
// if (value instanceof Escape) return value
|
|
225
|
+
// else return SQL.any(value)
|
|
226
|
+
// }), line);
|
|
227
|
+
// }
|
|
228
|
+
//
|
|
229
|
+
//
|
|
230
|
+
// sql.joins = ( ...builders:QueryBuilderResult[] )=>{
|
|
231
|
+
// let builder = builders.shift();
|
|
232
|
+
// if( !!builder && builders.length ) builder.push( ...builders );
|
|
233
|
+
// return builder;
|
|
234
|
+
// }
|
|
235
|
+
//
|
|
236
|
+
// sql.join = ( builders:QueryBuilderResult[] )=>{
|
|
237
|
+
// return sql.joins( ...(builders||[]) );
|
|
238
|
+
// }
|
|
239
|
+
//
|
|
240
|
+
// export function noAutoEscapeSql( sqlTemplate:TemplateStringsArray, ...values):PostgresQueryBuilderResult{
|
|
241
|
+
// let line = scriptUtil.lineOf( 1 );
|
|
242
|
+
// return new PostgresQueryBuilderResult( sqlTemplate, values, line );
|
|
243
|
+
// }
|
|
244
|
+
//
|
|
245
|
+
// export function queryJoin( ...prepared:QueryBuilderResult[] ):PostgresQueryBuilderResult {
|
|
246
|
+
// if( !prepared || !prepared.length ) throw new Error( "Query join is empty!");
|
|
247
|
+
// let superList = prepared;
|
|
248
|
+
// // @ts-ignore
|
|
249
|
+
// let joins = new QueryBuilderResult(undefined,undefined, prepared[ 0 ].line );
|
|
250
|
+
// superList.forEach( builder => {
|
|
251
|
+
// joins.push( builder );
|
|
252
|
+
// });
|
|
253
|
+
// return joins;
|
|
254
|
+
// }
|
package/src/utils/escape.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export declare function oid(string: string): string;
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function lit(string: string, type?: string): string;
|
|
3
|
+
export declare const VARCHAR = "varchar";
|
|
4
|
+
export declare const TEXT = "text";
|
|
5
|
+
export declare const DOUBLE = "double precision";
|
|
6
|
+
export declare const NUMERIC = "numeric";
|
|
3
7
|
//# sourceMappingURL=escape.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["escape.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["escape.ts"],"names":[],"mappings":"AAmBA,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa1C;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAC,MAAM,UAK/C;AAED,eAAO,MAAM,OAAO,YAAU,CAAC;AAC/B,eAAO,MAAM,IAAI,SAAO,CAAC;AACzB,eAAO,MAAM,MAAM,qBAAmB,CAAC;AACvC,eAAO,MAAM,OAAO,YAAU,CAAC"}
|