working server with migrations as defined

BOOM BABY!!!
This commit is contained in:
2020-06-16 01:54:12 -06:00
parent 3505b16169
commit d212d3b36c
15 changed files with 133 additions and 20 deletions

View File

@ -1,21 +1,36 @@
import * as path from 'path';
import simmer from './simmer-def-example';
// import simmer from './simmer-def-example';
const ncp = require('ncp').ncp;
// import defs from './example-def';
import * as fs from 'fs';
import defs from './example-def';
declare var __dirname: any;
let outDir = 'test';
function createDatabase(storageDef: StorageDef) {
let tableCreationQueries: string[] = [];
let tableDeletionQueries: string[] = [];
for (let i in storageDef.tables) {
tableCreationQueries.push(getTableCreationString(storageDef.tables[i]));
tableDeletionQueries.push(getTableDeletionString(storageDef.tables[i]));
}
for (let i in storageDef.relations) {
tableCreationQueries.push(getTableRelationsCreationString(storageDef.relations[i]));
tableDeletionQueries.push(getTableRelationsDeletionString(storageDef.relations[i]))
}
tableCreationQueries.map((query: string) => {
console.log(query);
});
tableDeletionQueries.map((query: string) => {
console.log(query);
});
return {
up: tableCreationQueries,
down: tableDeletionQueries,
};
}
function getTableCreationString(tableDef: TableDef): string {
@ -42,6 +57,10 @@ function getTableCreationString(tableDef: TableDef): string {
return `CREATE TABLE IF NOT EXISTS ${tableDef.name} (${columnString}${indexString !== '' ? ', ' + indexString : ''});`;
}
function getTableDeletionString(tableDef: TableDef): string {
return `DROP TABLE IF EXISTS ${tableDef.name};`
}
function createColumnString(column: ColumnDef) {
const typeMap: {[type: string]: string} = {
"blob": "BLOB",
@ -69,16 +88,38 @@ function getTableRelationsCreationString(relationsDef: ManyToManyDef): string {
return `CREATE TABLE IF NOT EXISTS ${relationsDef.left}_${relationsDef.right} (${columnString}${indexString !== '' ? ', ' + indexString : ''});`;
}
function getTableRelationsDeletionString(relationsDef: ManyToManyDef) : string {
return `DROP TABLE IF EXISTS ${relationsDef.left}_${relationsDef.right};`
}
ncp(path.join(__dirname, 'frame'), path.join(__dirname, 'test'), (err: any) => {
function dateString() {
let date = new Date();
return `${date.getFullYear()}${date.getMonth() + 1}${date.getDate()}`;
}
function writeMigrationsToFile(migrations: {up: string[], down: string[]}) {
let migrationFileContents = `
--up
${migrations.up.join('\n')}
--down
${migrations.down.join('\n')}
`;
let migrationFilePath = path.join(__dirname, outDir, 'src', 'migrationJobs', `${dateString()}-create-database.sql`);
fs.writeFileSync(migrationFilePath, migrationFileContents);
}
ncp(path.join(__dirname, 'frame'), path.join(__dirname, outDir), (err: any) => {
if (err) {
console.log(err);
} else {
console.log('success copying files');
let creationMigrations = createDatabase(defs.storage);
// let creationMigrations = createDatabase(simmer.storage);
writeMigrationsToFile(creationMigrations);
}
});
createDatabase(simmer.storage);