Skip to content

Commit 540b747

Browse files
committed
Moved DELIMIT_NAME to the order clause
Signed-off-by: Seb Julliand <[email protected]>
1 parent d5a5638 commit 540b747

File tree

1 file changed

+95
-95
lines changed

1 file changed

+95
-95
lines changed

src/database/schemas.ts

Lines changed: 95 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { getInstance } from "../base";
33

44
import { JobManager } from "../config";
55

6-
export type SQLType = "schemas"|"tables"|"views"|"aliases"|"constraints"|"functions"|"variables"|"indexes"|"procedures"|"sequences"|"packages"|"triggers"|"types";
7-
type PageData = {filter?: string, offset?: number, limit?: number};
6+
export type SQLType = "schemas" | "tables" | "views" | "aliases" | "constraints" | "functions" | "variables" | "indexes" | "procedures" | "sequences" | "packages" | "triggers" | "types";
7+
type PageData = { filter?: string, offset?: number, limit?: number };
88

99
const typeMap = {
1010
'tables': [`T`, `P`],
@@ -33,100 +33,100 @@ export default class Schemas {
3333
switch (type) {
3434
case `schemas`:
3535
selects.push([
36-
`select '${type}' as OBJ_TYPE, QSYS2.DELIMIT_NAME(SCHEMA_NAME) as NAME, SCHEMA_TEXT as TEXT, SYSTEM_SCHEMA_NAME as SYS_NAME, '' as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
36+
`select '${type}' as OBJ_TYPE, SCHEMA_NAME as NAME, SCHEMA_TEXT as TEXT, SYSTEM_SCHEMA_NAME as SYS_NAME, '' as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
3737
`from QSYS2.SYSSCHEMAS`,
3838
details.filter ? `where UPPER(SCHEMA_NAME) = '${details.filter}' or UPPER(SYSTEM_SCHEMA_NAME) = '${details.filter}'` : ``,
3939
].join(` `));
40-
break;
41-
42-
case `tables`:
43-
case `views`:
44-
case `aliases`:
45-
selects.push([
46-
`select '${type}' as OBJ_TYPE, TABLE_NAME as NAME, TABLE_TEXT as TEXT, SYSTEM_TABLE_NAME as SYS_NAME, SYSTEM_TABLE_SCHEMA as SYS_SCHEMA, '' as SPECNAME, BASE_TABLE_SCHEMA as BASE_SCHEMA, BASE_TABLE_NAME as BASE_OBJ`,
47-
`from QSYS2.SYSTABLES`,
48-
`where TABLE_SCHEMA = '${schema}' and TABLE_TYPE in (${typeMap[type].map(item => `'${item}'`).join(`, `)}) ${details.filter ? `and UPPER(TABLE_NAME) like '%${details.filter}%'`: ``}`,
49-
].join(` `));
50-
break;
51-
52-
case `constraints`:
53-
selects.push([
54-
`select '${type}' as OBJ_TYPE, CONSTRAINT_NAME as NAME, CONSTRAINT_TEXT as TEXT, SYSTEM_TABLE_NAME as SYS_NAME, SYSTEM_TABLE_SCHEMA as SYS_SCHEMA, '' as SPECNAME, TABLE_SCHEMA as BASE_SCHEMA, TABLE_NAME as BASE_OBJ`,
55-
`from QSYS2.SYSCST`,
56-
`where CONSTRAINT_SCHEMA = '${schema}' ${details.filter ? `and UPPER(CONSTRAINT_NAME) like '%${details.filter}%'`: ``}`,
57-
].join(` `));
58-
break;
59-
60-
case `functions`:
61-
selects.push([
62-
`select '${type}' as OBJ_TYPE, ROUTINE_NAME as NAME, coalesce(ROUTINE_TEXT, LONG_COMMENT) as TEXT, '' as SYS_NAME, '' as SYS_SCHEMA, SPECIFIC_NAME as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
63-
`from QSYS2.SYSFUNCS`,
64-
`where ROUTINE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(ROUTINE_NAME) like '%${details.filter}%'`: ``} and FUNCTION_ORIGIN in ('E','U')`,
65-
].join(` `));
66-
break;
67-
68-
case `variables`:
69-
selects.push([
70-
`select '${type}' as OBJ_TYPE, VARIABLE_NAME as NAME, VARIABLE_TEXT as TEXT, SYSTEM_VAR_NAME as SYS_NAME, SYSTEM_VAR_SCHEMA as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
71-
`from QSYS2.SYSVARIABLES`,
72-
`where VARIABLE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(VARIABLE_NAME) like '%${details.filter}%'`: ``}`,
73-
].join(` `));
74-
break;
75-
76-
case `indexes`:
77-
selects.push([
78-
`select '${type}' as OBJ_TYPE, INDEX_NAME as NAME, INDEX_TEXT as TEXT, SYSTEM_INDEX_NAME as SYS_NAME, SYSTEM_INDEX_SCHEMA as SYS_SCHEMA, '' as SPECNAME, TABLE_SCHEMA as BASE_SCHEMA, TABLE_NAME as BASE_OBJ`,
79-
`from QSYS2.SYSINDEXES`,
80-
`where INDEX_SCHEMA = '${schema}' ${details.filter ? `and UPPER(INDEX_NAME) like '%${details.filter}%'`: ``}`,
81-
].join(` `));
82-
break;
83-
84-
case `procedures`:
85-
selects.push([
86-
`select '${type}' as OBJ_TYPE, ROUTINE_NAME as NAME, ROUTINE_TEXT as TEXT, '' as SYS_NAME, '' as SYS_SCHEMA, SPECIFIC_NAME as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
87-
`from QSYS2.SYSPROCS`,
88-
`where ROUTINE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(ROUTINE_NAME) like '%${details.filter}%'`: ``}`,
89-
].join(` `));
90-
break;
91-
92-
case `sequences`:
93-
selects.push([
94-
`select '${type}' as OBJ_TYPE, SEQUENCE_NAME as NAME, SEQUENCE_TEXT as TEXT, SYSTEM_SEQ_NAME as SYS_NAME, SYSTEM_SEQ_SCHEMA as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
95-
`from QSYS2.SYSSEQUENCES`,
96-
`where SEQUENCE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(SEQUENCE_NAME) like '%${details.filter}%'`: ``}`,
97-
].join(` `));
98-
break;
99-
100-
// case `packages`:
101-
// selects.push([
102-
// `select '${type}' as OBJ_TYPE, PACKAGE_NAME as NAME, PACKAGE_TEXT as TEXT, PROGRAM_SCHEMA as BASE_SCHEMA, PROGRAM_NAME as BASE_OBJ, `,
103-
// ` '' as SYS_SCHEMA, '' as SYS_NAME, '' as SPECNAME`,
104-
// `from QSYS2.SQLPACKAGE`,
105-
// `where PACKAGE_SCHEMA = '${schema}' ${details.filter ? `and PACKAGE_NAME like '%${details.filter}%'`: ``}`,
106-
// ].join(` `));
107-
// break;
108-
109-
case `triggers`:
110-
selects.push([
111-
`select '${type}' as OBJ_TYPE, TRIGGER_NAME as NAME, TRIGGER_TEXT as TEXT, '' as SYS_NAME, '' as SYS_SCHEMA, '' as SPECNAME, EVENT_OBJECT_SCHEMA as BASE_SCHEMA, EVENT_OBJECT_TABLE as BASE_OBJ`,
112-
`from QSYS2.SYSTRIGGERS`,
113-
`where TRIGGER_SCHEMA = '${schema}' ${details.filter ? `and UPPER(TRIGGER_NAME) like '%${details.filter}%'`: ``}`,
114-
].join(` `));
115-
break;
116-
117-
case `types`:
118-
selects.push([
119-
`select '${type}' as OBJ_TYPE, USER_DEFINED_TYPE_NAME as NAME, TYPE_TEXT as TEXT, SYSTEM_TYPE_NAME as SYS_NAME, SYSTEM_TYPE_SCHEMA as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
120-
`from QSYS2.SYSTYPES`,
121-
`where USER_DEFINED_TYPE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(USER_DEFINED_TYPE_NAME) like '%${details.filter}%'`: ``}`,
122-
].join(` `));
123-
break;
40+
break;
41+
42+
case `tables`:
43+
case `views`:
44+
case `aliases`:
45+
selects.push([
46+
`select '${type}' as OBJ_TYPE, TABLE_NAME as NAME, TABLE_TEXT as TEXT, SYSTEM_TABLE_NAME as SYS_NAME, SYSTEM_TABLE_SCHEMA as SYS_SCHEMA, '' as SPECNAME, BASE_TABLE_SCHEMA as BASE_SCHEMA, BASE_TABLE_NAME as BASE_OBJ`,
47+
`from QSYS2.SYSTABLES`,
48+
`where TABLE_SCHEMA = '${schema}' and TABLE_TYPE in (${typeMap[type].map(item => `'${item}'`).join(`, `)}) ${details.filter ? `and UPPER(TABLE_NAME) like '%${details.filter}%'` : ``}`,
49+
].join(` `));
50+
break;
51+
52+
case `constraints`:
53+
selects.push([
54+
`select '${type}' as OBJ_TYPE, CONSTRAINT_NAME as NAME, CONSTRAINT_TEXT as TEXT, SYSTEM_TABLE_NAME as SYS_NAME, SYSTEM_TABLE_SCHEMA as SYS_SCHEMA, '' as SPECNAME, TABLE_SCHEMA as BASE_SCHEMA, TABLE_NAME as BASE_OBJ`,
55+
`from QSYS2.SYSCST`,
56+
`where CONSTRAINT_SCHEMA = '${schema}' ${details.filter ? `and UPPER(CONSTRAINT_NAME) like '%${details.filter}%'` : ``}`,
57+
].join(` `));
58+
break;
59+
60+
case `functions`:
61+
selects.push([
62+
`select '${type}' as OBJ_TYPE, ROUTINE_NAME as NAME, coalesce(ROUTINE_TEXT, LONG_COMMENT) as TEXT, '' as SYS_NAME, '' as SYS_SCHEMA, SPECIFIC_NAME as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
63+
`from QSYS2.SYSFUNCS`,
64+
`where ROUTINE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(ROUTINE_NAME) like '%${details.filter}%'` : ``} and FUNCTION_ORIGIN in ('E','U')`,
65+
].join(` `));
66+
break;
67+
68+
case `variables`:
69+
selects.push([
70+
`select '${type}' as OBJ_TYPE, VARIABLE_NAME as NAME, VARIABLE_TEXT as TEXT, SYSTEM_VAR_NAME as SYS_NAME, SYSTEM_VAR_SCHEMA as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
71+
`from QSYS2.SYSVARIABLES`,
72+
`where VARIABLE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(VARIABLE_NAME) like '%${details.filter}%'` : ``}`,
73+
].join(` `));
74+
break;
75+
76+
case `indexes`:
77+
selects.push([
78+
`select '${type}' as OBJ_TYPE, INDEX_NAME as NAME, INDEX_TEXT as TEXT, SYSTEM_INDEX_NAME as SYS_NAME, SYSTEM_INDEX_SCHEMA as SYS_SCHEMA, '' as SPECNAME, TABLE_SCHEMA as BASE_SCHEMA, TABLE_NAME as BASE_OBJ`,
79+
`from QSYS2.SYSINDEXES`,
80+
`where INDEX_SCHEMA = '${schema}' ${details.filter ? `and UPPER(INDEX_NAME) like '%${details.filter}%'` : ``}`,
81+
].join(` `));
82+
break;
83+
84+
case `procedures`:
85+
selects.push([
86+
`select '${type}' as OBJ_TYPE, ROUTINE_NAME as NAME, ROUTINE_TEXT as TEXT, '' as SYS_NAME, '' as SYS_SCHEMA, SPECIFIC_NAME as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
87+
`from QSYS2.SYSPROCS`,
88+
`where ROUTINE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(ROUTINE_NAME) like '%${details.filter}%'` : ``}`,
89+
].join(` `));
90+
break;
91+
92+
case `sequences`:
93+
selects.push([
94+
`select '${type}' as OBJ_TYPE, SEQUENCE_NAME as NAME, SEQUENCE_TEXT as TEXT, SYSTEM_SEQ_NAME as SYS_NAME, SYSTEM_SEQ_SCHEMA as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
95+
`from QSYS2.SYSSEQUENCES`,
96+
`where SEQUENCE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(SEQUENCE_NAME) like '%${details.filter}%'` : ``}`,
97+
].join(` `));
98+
break;
99+
100+
// case `packages`:
101+
// selects.push([
102+
// `select '${type}' as OBJ_TYPE, PACKAGE_NAME as NAME, PACKAGE_TEXT as TEXT, PROGRAM_SCHEMA as BASE_SCHEMA, PROGRAM_NAME as BASE_OBJ, `,
103+
// ` '' as SYS_SCHEMA, '' as SYS_NAME, '' as SPECNAME`,
104+
// `from QSYS2.SQLPACKAGE`,
105+
// `where PACKAGE_SCHEMA = '${schema}' ${details.filter ? `and PACKAGE_NAME like '%${details.filter}%'`: ``}`,
106+
// ].join(` `));
107+
// break;
108+
109+
case `triggers`:
110+
selects.push([
111+
`select '${type}' as OBJ_TYPE, TRIGGER_NAME as NAME, TRIGGER_TEXT as TEXT, '' as SYS_NAME, '' as SYS_SCHEMA, '' as SPECNAME, EVENT_OBJECT_SCHEMA as BASE_SCHEMA, EVENT_OBJECT_TABLE as BASE_OBJ`,
112+
`from QSYS2.SYSTRIGGERS`,
113+
`where TRIGGER_SCHEMA = '${schema}' ${details.filter ? `and UPPER(TRIGGER_NAME) like '%${details.filter}%'` : ``}`,
114+
].join(` `));
115+
break;
116+
117+
case `types`:
118+
selects.push([
119+
`select '${type}' as OBJ_TYPE, USER_DEFINED_TYPE_NAME as NAME, TYPE_TEXT as TEXT, SYSTEM_TYPE_NAME as SYS_NAME, SYSTEM_TYPE_SCHEMA as SYS_SCHEMA, '' as SPECNAME, '' as BASE_SCHEMA, '' as BASE_OBJ`,
120+
`from QSYS2.SYSTYPES`,
121+
`where USER_DEFINED_TYPE_SCHEMA = '${schema}' ${details.filter ? `and UPPER(USER_DEFINED_TYPE_NAME) like '%${details.filter}%'` : ``}`,
122+
].join(` `));
123+
break;
124124
}
125125
}
126126

127-
const query = `${selects.join(" UNION ALL ")} Order by NAME asc`;
127+
const query = `${selects.join(" UNION ALL ")} Order by QSYS2.DELIMIT_NAME(NAME) asc`;
128128

129-
const objects : any[] = await JobManager.runSQL([
129+
const objects: any[] = await JobManager.runSQL([
130130
query,
131131
`${details.limit ? `limit ${details.limit}` : ``} ${details.offset ? `offset ${details.offset}` : ``}`
132132
].join(` `));
@@ -153,20 +153,20 @@ export default class Schemas {
153153
* @param object Not user input
154154
*/
155155
static async generateSQL(schema: string, object: string, internalType: string): Promise<string> {
156-
const lines = await JobManager.runSQL<{SRCDTA: string}>([
156+
const lines = await JobManager.runSQL<{ SRCDTA: string }>([
157157
`CALL QSYS2.GENERATE_SQL(?, ?, ?, CREATE_OR_REPLACE_OPTION => '1', PRIVILEGES_OPTION => '0')`
158-
].join(` `), { parameters : [object, schema, internalType] });
158+
].join(` `), { parameters: [object, schema, internalType] });
159159

160160
const generatedStatement = lines.map(line => line.SRCDTA).join(`\n`);
161-
161+
162162
return generatedStatement;
163163
}
164-
165-
static async deleteObject(schema: string, name:string, type: string): Promise<void> {
164+
165+
static async deleteObject(schema: string, name: string, type: string): Promise<void> {
166166
const query = `DROP ${(this.isRoutineType(type) ? 'SPECIFIC ' : '') + type} IF EXISTS ${schema}.${name}`;
167167
await getInstance().getContent().runSQL(query);
168168
}
169-
169+
170170
static async renameObject(schema: string, oldName: string, newName: string, type: string): Promise<void> {
171171
const query = `RENAME ${type === 'view' ? 'table' : type} ${schema}.${oldName} TO ${newName}`;
172172
await getInstance().getContent().runSQL(query);

0 commit comments

Comments
 (0)