UNPKG

sql-ddl-query-generator

Version:

To make it easy for you to get started with GitLab, here's a list of recommended next steps.

69 lines (54 loc) 2.63 kB
import {IColumn} from './index.d'; export type operation = "ADD" | "DROP" | "MODIFY"; export function createDatabaseOrExercise(categoryName: string) { return 'CREATE DATABASE ' + categoryName; } export function createSchema(schemaName: string) { return 'CREATE SCHEMA ' + schemaName; } export function drop(tableName: string) { return 'DROP TABLE ' + tableName; } export async function createTable(table: string, columns?: IColumn[]) { const operation = 'CREATE TABLE'; let query = ''; if (columns) { let tableColumns = ''; for (const column of columns) { if (column.constraints.length) { for (const constraint of column.constraints) { tableColumns += `\n${column.fieldName} ${column.datatype} ${constraint} ,` } } else { tableColumns += `\n${column.fieldName} ${column.datatype} ,` } } query = `${operation} ${table} (${tableColumns.substring(0, tableColumns.length - 2)})`; return query } query = `${operation} ${table}`; return query; } export function alter(tablename: string, fields: any, operation: operation, modifyTableConstraints: boolean) { if (operation === 'ADD') { if (modifyTableConstraints) { if (fields.constraint === "FOREIGN KEY" || fields.constraint === "UNIQUE FOREIGN KEY") { return `ALTER TABLE ${tablename} ${operation} CONSTRAINT ${fields.constraint} (${fields.target}) REFERENCES ${fields.sourceTable} (${fields.source})` } return `ALTER TABLE ${tablename} ${operation} CONSTRAINT ${fields.constraint} (${fields.column})`; } else return `ALTER TABLE ${tablename} ${operation} (${fields.columnname} ${fields.datatype})`; } else if (operation === 'DROP') { return modifyTableConstraints ? `ALTER TABLE ${tablename} ${operation} CONSTRAINT ${fields.constraint} (${fields.column})` : `ALTER TABLE ${tablename} ${operation} (${fields.columnname})` } else if (operation === 'MODIFY') { return modifyTableConstraints ? `ALTER TABLE ${tablename} ${operation} CONSTRAINT ${fields.constraint} (${fields.column})` : `ALTER TABLE ${tablename} ${operation} (${fields.columnname} ${fields.datatype})` } } export function truncate(tableName: string) { return `TRUNCATE TABLE ${tableName}`; } export function rename(Old_Table_Name: string, New_Table_Name: string) { return `RENAME TABLE ${Old_Table_Name} TO ${New_Table_Name}`; }