@@ -4,26 +4,6 @@ import { DataSource } from 'typeorm';
4
4
5
5
// HELPER FUNCTIONS FOR THE HELPER FUNCTIONS
6
6
7
- const tableNameFormat = async ( req : Request , dbDataSource : DataSource ) => {
8
- const { db_type, username } = req . session ;
9
- const { tableName } = req . body ;
10
-
11
- let tableNameFormat = '' ;
12
- switch ( db_type ) {
13
- case 'oracle' :
14
- tableNameFormat = `"${ ( username as string ) . toUpperCase ( ) } "."${ tableName } "` ;
15
- break ;
16
- case 'mssql' :
17
- const schemaName : { [ SchemaName : string ] : string } [ ] = await dbDataSource . query ( `SELECT SCHEMA_NAME() AS SchemaName;` ) ;
18
- tableNameFormat = `${ schemaName [ 0 ] . SchemaName } .${ tableName } ` ;
19
- break ;
20
- default :
21
- tableNameFormat = tableName ;
22
- break ;
23
- } ;
24
- return tableNameFormat ;
25
- } ;
26
-
27
7
interface NewColumn {
28
8
name : string ,
29
9
type : string ,
@@ -113,28 +93,28 @@ export const dbConnect = async (req: Request) => {
113
93
//-------------------------------------DATA TABLE ROWS----------------------------------------------------------------------------------------
114
94
//-------------------ADD NEW ROW-----------------------------------------------------------------------------------------
115
95
116
- export const addNewDbRow : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
96
+ export const addNewDbRow : RequestHandler = async ( req : Request , res : Response , next : NextFunction , ) => {
117
97
const dbDataSource = await dbConnect ( req ) ;
118
98
const { db_type } = req . session ;
119
- const { newRow } = req . body ;
99
+ const { newRow, tableName } = req . body ;
120
100
121
101
try {
122
- // const tableNameAdd: string = db_type === 'oracle' ? `"${(username as string).toUpperCase()}"."${tableName}"` : tableName;
123
- const tableNameAdd = await Promise . resolve ( tableNameFormat ( req , dbDataSource ) ) ;
124
- const newSqlRow : { [ key : string ] : string } = newRow as { } ;
102
+ const keys : string = db_type === 'oracle' ? Object . keys ( newRow ) . map ( key => `"${ key } "` ) . join ( ", " ) : Object . keys ( newRow ) . join ( ", " ) ;
103
+ const values : string = Object . values ( newRow ) . map ( val => `'${ val } '` ) . join ( ", " ) ;
125
104
126
- const keys : string = db_type === 'oracle' ? Object . keys ( newSqlRow ) . map ( key => `"${ key } "` ) . join ( ", " ) : Object . keys ( newSqlRow ) . join ( ", " ) ;
127
- const values : string = Object . values ( newSqlRow ) . map ( val => `'${ val } '` ) . join ( ", " ) ;
105
+ console . log ( 'tablename: ' , tableName )
106
+ console . log ( 'keys: ' , keys )
107
+ console . log ( 'values: ' , values )
128
108
129
109
const dbAddedRow : Promise < unknown > = await dbDataSource . query ( `
130
- INSERT INTO ${ tableNameAdd } (${ keys } )
110
+ INSERT INTO ${ tableName } (${ keys } )
131
111
VALUES (${ values } )
132
112
` ) ;
133
113
134
114
await dbDataSource . destroy ( ) ;
135
115
console . log ( 'Database has been disconnected' ) ;
136
116
console . log ( 'dbAddedRow in helper: ' , dbAddedRow ) ;
137
- return dbAddedRow ;
117
+ return ;
138
118
139
119
} catch ( err : unknown ) {
140
120
console . log ( 'Error occurred in the addNewDbRow middleware: ' , err ) ;
@@ -148,26 +128,11 @@ export const addNewDbRow: RequestHandler = async (req: Request, _res: Response,
148
128
149
129
export const updateRow : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
150
130
const dbDataSource = await dbConnect ( req ) ;
151
- const { db_type, username } = req . session ;
131
+ const { db_type } = req . session ;
152
132
const { newRow, tableName, primaryKey } = req . body ;
153
133
154
134
try {
155
- let tableNameUpdate = '' ;
156
- switch ( db_type ) {
157
- case 'oracle' :
158
- tableNameUpdate = `"${ ( username as string ) . toUpperCase ( ) } "."${ tableName } "` ;
159
- break ;
160
- case 'mssql' :
161
- const schemaName : { [ SchemaName : string ] : string } [ ] = await dbDataSource . query ( `SELECT SCHEMA_NAME() AS SchemaName;` ) ;
162
- tableNameUpdate = `${ schemaName [ 0 ] . SchemaName } .${ tableName } ` ;
163
- break ;
164
- default :
165
- tableNameUpdate = tableName ;
166
- break ;
167
- } ;
168
-
169
- //const tableNameUpdate = await Promise.resolve(tableNameFormat(req, dbDataSource));
170
-
135
+ console . log ( 'req.body: ' , req . body )
171
136
const updateKeys = Object . keys ( newRow ) ;
172
137
const updateValues = Object . values ( newRow ) ;
173
138
let oracleKeyValueString = '' ;
@@ -177,18 +142,31 @@ export const updateRow: RequestHandler = async (req: Request, _res: Response, ne
177
142
178
143
const keyValueString = oracleKeyValueString . replace ( / " / g, '' ) ;
179
144
180
- const primaryKeyName = Object . keys ( primaryKey ) ;
181
- const primaryKeyValue = Object . values ( primaryKey ) ;
145
+ if ( primaryKey ) {
146
+
147
+ const primaryKeyName = Object . keys ( primaryKey ) ;
148
+ const primaryKeyValue = Object . values ( primaryKey ) ;
149
+ const dbUpdatedRow = await dbDataSource . query ( `
150
+ UPDATE ${ tableName }
151
+ SET ${ db_type === 'oracle' ? oracleKeyValueString : keyValueString }
152
+ WHERE ${ db_type === 'oracle' ? `"${ primaryKeyName } "` : primaryKeyName } = ${ db_type === 'oracle' || db_type === 'mysql' ? `'${ primaryKeyValue } '` : primaryKeyValue }
153
+ ` ) ;
154
+
155
+ await dbDataSource . destroy ( ) ;
156
+ console . log ( 'Database has been disconnected' ) ;
157
+ return dbUpdatedRow ;
158
+
159
+ } else {
182
160
183
- const dbUpdatedRow = await dbDataSource . query ( `
184
- UPDATE ${ tableNameUpdate }
161
+ const dbUpdatedRow = await dbDataSource . query ( `
162
+ UPDATE ${ tableName }
185
163
SET ${ db_type === 'oracle' ? oracleKeyValueString : keyValueString }
186
- WHERE ${ db_type === 'oracle' ? `"${ primaryKeyName } "` : primaryKeyName } = ${ db_type === 'oracle' || db_type === 'mysql' ? `'${ primaryKeyValue } '` : primaryKeyValue }
187
- ` ) ;
164
+ ` ) ;
188
165
189
- await dbDataSource . destroy ( ) ;
190
- console . log ( 'Database has been disconnected' ) ;
191
- return dbUpdatedRow ;
166
+ await dbDataSource . destroy ( ) ;
167
+ console . log ( 'Database has been disconnected' ) ;
168
+ return dbUpdatedRow ;
169
+ } ;
192
170
193
171
} catch ( err : unknown ) {
194
172
console . log ( 'Error occurred in the updatedRow middleware: ' , err ) ;
@@ -203,11 +181,9 @@ export const updateRow: RequestHandler = async (req: Request, _res: Response, ne
203
181
export const deleteRow : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
204
182
const dbDataSource = await dbConnect ( req ) ;
205
183
const { db_type } = req . session ;
206
- const { value } = req . body
184
+ const { value, tableName } = req . body
207
185
208
186
try {
209
- const tableNameDelete = await Promise . resolve ( tableNameFormat ( req , dbDataSource ) ) ;
210
-
211
187
const deleteEntries = Object . entries ( value ) . filter ( ( [ _key , value ] ) => value !== null ) ;
212
188
const deleteKeys = deleteEntries . map ( ( [ key , _value ] ) => key ) ;
213
189
const deleteValues = deleteEntries . map ( ( [ _key , value ] ) => value ) ;
@@ -219,7 +195,7 @@ export const deleteRow: RequestHandler = async (req: Request, _res: Response, ne
219
195
const keyValueString = oracleKeyValueString . replace ( / " / g, '' ) ;
220
196
221
197
await dbDataSource . query ( `
222
- DELETE FROM ${ tableNameDelete }
198
+ DELETE FROM ${ tableName }
223
199
WHERE ${ db_type === 'oracle' ? oracleKeyValueString : keyValueString }
224
200
` )
225
201
@@ -241,27 +217,24 @@ export const deleteRow: RequestHandler = async (req: Request, _res: Response, ne
241
217
export const addNewDbColumn : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
242
218
const dbDataSource = await dbConnect ( req ) ;
243
219
const { db_type } = req . session ;
244
- const { columnData } = req . body ;
220
+ const { columnData, tableName } = req . body ;
245
221
console . log ( 'req.body: ' , req . body )
246
222
247
223
try {
248
- const tableNameAddColumn = await Promise . resolve ( tableNameFormat ( req , dbDataSource ) ) ;
249
- console . log ( 'tableNameAddColumn: ' , tableNameAddColumn )
250
-
251
224
let keyValueString : string = '' ;
252
225
let newColumnString : string = ''
253
226
254
227
columnData . forEach ( ( el : NewColumn ) => {
255
228
if ( db_type === 'mssql' ) {
256
- keyValueString += `ALTER TABLE ${ tableNameAddColumn } ADD "${ el . name } " ${ el . type === 'AUTO_INCREMENT' ? 'INT' : el . type } ${ el . isPrimary ? ' PRIMARY KEY' : '' } ${ el . isNullable ? '' : ' NOT NULL' } ${ el . defaultValue ? ` DEFAULT ${ el . defaultValue } ` : '' } ${ el . type === 'AUTO_INCREMENT' ? ' AUTO_INCREMENT' : '' } ; `
229
+ keyValueString += `ALTER TABLE ${ tableName } ADD "${ el . name } " ${ el . type === 'AUTO_INCREMENT' ? 'INT' : el . type } ${ el . isPrimary ? ' PRIMARY KEY' : '' } ${ el . isNullable ? '' : ' NOT NULL' } ${ el . defaultValue ? ` DEFAULT ${ el . defaultValue } ` : '' } ${ el . type === 'AUTO_INCREMENT' ? ' AUTO_INCREMENT' : '' } ; `
257
230
} else if ( db_type === 'oracle' ) {
258
231
let number : string = '' ;
259
232
if ( el . type . includes ( 'VARCHAR' ) ) {
260
233
const regex = / \( ( \d + ) \) / ;
261
234
const match = el . type . match ( regex )
262
235
number = ( match as RegExpMatchArray ) [ 1 ]
263
236
}
264
- keyValueString += `ALTER TABLE ${ tableNameAddColumn } ADD(${ el . name } ${ el . type . includes ( 'VARCHAR' ) ? `VARCHAR2(${ + number } )` : el . type } ${ el . isPrimary ? ' PRIMARY KEY' : '' } ${ el . isNullable ? '' : ' NOT NULL' } ${ el . defaultValue ? ` DEFAULT ${ el . defaultValue } ` : '' } ${ el . type === 'AUTO_INCREMENT' ? ' AUTO_INCREMENT' : '' } ))`
237
+ keyValueString += `ALTER TABLE ${ tableName } ADD(${ el . name } ${ el . type . includes ( 'VARCHAR' ) ? `VARCHAR2(${ + number } )` : el . type } ${ el . isPrimary ? ' PRIMARY KEY' : '' } ${ el . isNullable ? '' : ' NOT NULL' } ${ el . defaultValue ? ` DEFAULT ${ el . defaultValue } ` : '' } ${ el . type === 'AUTO_INCREMENT' ? ' AUTO_INCREMENT' : '' } ))`
265
238
} else {
266
239
keyValueString += `ADD${ db_type === 'postgres' ? ' COLUMN' : '' } ${ db_type === 'mysql' ? `${ el . name } ` : `"${ el . name } "` } ${ el . type === 'AUTO_INCREMENT' ? 'INT' : el . type } ${ el . isPrimary ? ' PRIMARY KEY' : '' } ${ el . isNullable ? '' : ' NOT NULL' } ${ el . defaultValue ? ` DEFAULT ${ el . defaultValue } ` : '' } ${ el . type === 'AUTO_INCREMENT' ? ' AUTO_INCREMENT' : '' } , `
267
240
} ;
@@ -284,7 +257,7 @@ export const addNewDbColumn: RequestHandler = async (req: Request, _res: Respons
284
257
return addedNewColumn ;
285
258
} else {
286
259
const addedNewColumn : Promise < unknown > = await dbDataSource . query ( `
287
- ALTER TABLE ${ tableNameAddColumn }
260
+ ALTER TABLE ${ tableName }
288
261
${ newColumnString }
289
262
` ) ;
290
263
@@ -302,27 +275,21 @@ export const addNewDbColumn: RequestHandler = async (req: Request, _res: Respons
302
275
} ;
303
276
304
277
//-----------------UPDATE COLUMN---------------------------------------------------------------------------------------------
305
-
278
+ //Currently Does not work
306
279
export const updateDbColumn : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
307
280
const dbDataSource = await dbConnect ( req ) ;
308
281
const { db_type } = req . session ;
309
- const { columnName, schemaData, columnData } = req . body ;
282
+ const { columnName, schemaData, columnData, tableName } = req . body ;
310
283
311
284
try {
312
- const tableNameUpdateColumn = await Promise . resolve ( tableNameFormat ( req , dbDataSource ) ) ;
313
- console . log ( 'schemaData: ' , schemaData )
314
- console . log ( 'columnData: ' , columnData )
315
-
316
-
317
285
await dbDataSource . query ( `
318
- UPDATE ${ tableNameUpdateColumn }
286
+ UPDATE ${ tableName }
319
287
${ db_type === 'postgres' || db_type === 'microsoft' ? 'ALTER COLUMN' : 'MODIFY' } "${ columnName } " ${ db_type } ${ columnData . additional_constraint ? columnData . additional_constraint : '' } ;
320
288
` ) ;
321
289
322
290
dbDataSource . destroy ( ) ;
323
291
console . log ( 'Database has been disconnected' ) ;
324
- // console.log('addedForeignKey in helper: ', updatedColumn);
325
- // return updatedColumn;
292
+ return ;
326
293
327
294
} catch ( err : unknown ) {
328
295
console . log ( 'Error occurred in the addedForeignKey middleware: ' , err ) ;
@@ -337,13 +304,11 @@ export const updateDbColumn: RequestHandler = async (req: Request, _res: Respons
337
304
export const deleteColumn : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
338
305
const dbDataSource = await dbConnect ( req )
339
306
const { db_type } = req . session
340
- const { columnName } = req . body
341
- console . log ( 'we are in the helper functions: ' , req . body )
342
- try {
343
- const columnTableNameDelete = await Promise . resolve ( tableNameFormat ( req , dbDataSource ) ) ;
307
+ const { columnName, tableName } = req . body
344
308
309
+ try {
345
310
const deletedColumn : Promise < unknown > = await dbDataSource . query ( `
346
- ALTER TABLE ${ columnTableNameDelete }
311
+ ALTER TABLE ${ tableName }
347
312
DROP${ db_type !== 'mysql' ? ' COLUMN' : '' } ${ columnName }
348
313
` )
349
314
@@ -365,24 +330,21 @@ console.log('we are in the helper functions: ', req.body)
365
330
366
331
export const addNewTable : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
367
332
const dbDataSource = await dbConnect ( req )
368
- const { newColumns } = req . body
369
-
370
- try {
371
- const tableNameNewTable = await Promise . resolve ( tableNameFormat ( req , dbDataSource ) ) ;
372
-
333
+ const { newColumns, tableName } = req . body
373
334
374
- let keyValueString : string = '' ;
375
- newColumns . forEach ( ( el : NewColumn ) => {
376
- keyValueString += `${ el . name } ${ el . type } ${ el . isPrimary ? ' PRIMARY KEY' : '' } ${ el . isNullable ? '' : ' NOT NULL' } , `
377
- } ) ;
335
+ try {
336
+ let keyValueString : string = '' ;
337
+ newColumns . forEach ( ( el : NewColumn ) => {
338
+ keyValueString += `${ el . name } ${ el . type } ${ el . isPrimary ? ' PRIMARY KEY' : '' } ${ el . isNullable ? '' : ' NOT NULL' } , `
339
+ } ) ;
378
340
379
- const newTableColumnString : string = keyValueString . slice ( 0 , - 2 ) ;
341
+ const newTableColumnString : string = keyValueString . slice ( 0 , - 2 ) ;
380
342
381
- await dbDataSource . query ( `
382
- CREATE TABLE ${ tableNameNewTable } (
383
- ${ newTableColumnString }
384
- )`
385
- ) ;
343
+ await dbDataSource . query ( `
344
+ CREATE TABLE ${ tableName } (
345
+ ${ newTableColumnString }
346
+ )`
347
+ ) ;
386
348
387
349
await dbDataSource . destroy ( ) ;
388
350
console . log ( 'Database has been disconnected' ) ;
@@ -461,24 +423,9 @@ export const getTableNames: RequestHandler = async (req: Request, res: Response,
461
423
export const deleteTable : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
462
424
const dbDataSource = await dbConnect ( req ) ;
463
425
const { db_type, username } = req . session ;
426
+ const { tableName } = req . body
464
427
465
428
try {
466
- const deleteTableData : { [ key : string ] : string } = req . body ;
467
-
468
- let tableName = '' ;
469
- switch ( db_type ) {
470
- case 'oracle' :
471
- tableName = `"${ ( username as string ) . toUpperCase ( ) } "."${ deleteTableData . tableName } "` ;
472
- break ;
473
- case 'mssql' :
474
- const schemaName : { [ SchemaName : string ] : string } [ ] = await dbDataSource . query ( `SELECT SCHEMA_NAME() AS SchemaName;` ) ;
475
- tableName = `${ schemaName [ 0 ] . SchemaName } .${ deleteTableData . tableName } ` ;
476
- break ;
477
- default :
478
- tableName = deleteTableData . tableName ;
479
- break ;
480
- } ;
481
-
482
429
const deletedTable : Promise < unknown > = await dbDataSource . query ( `DROP TABLE ${ tableName } ` )
483
430
484
431
dbDataSource . destroy ( ) ;
@@ -556,14 +503,12 @@ export const addForeignKey: RequestHandler = async (req: Request, _res: Response
556
503
export const removeForeignKey : RequestHandler = async ( req : Request , _res : Response , next : NextFunction , ) => {
557
504
const dbDataSource = await dbConnect ( req ) ;
558
505
const { db_type } = req . session ;
506
+ const { tableName, constraintName } = req . body
559
507
560
508
try {
561
- const removeForeignKeyTableName = await Promise . resolve ( tableNameFormat ( req , dbDataSource ) ) ;
562
- const removeForeignKeyData : { [ key : string ] : string } = req . body ;
563
-
564
509
const removedForeignKey : Promise < unknown > = await dbDataSource . query ( `
565
- ALTER TABLE ${ removeForeignKeyTableName }
566
- DROP ${ db_type === 'mysql' ? 'FOREIGN KEY' : 'CONSTRAINT' } ${ removeForeignKeyData . constraintName }
510
+ ALTER TABLE ${ tableName }
511
+ DROP ${ db_type === 'mysql' ? 'FOREIGN KEY' : 'CONSTRAINT' } ${ constraintName }
567
512
` ) ;
568
513
569
514
dbDataSource . destroy ( ) ;
0 commit comments