working server with migrations as defined
BOOM BABY!!!
This commit is contained in:
@ -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);
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user