3f4d892dcd83d13829a89b6f74aa65a15e028ed3
[releng.git] / utils / test / vnfcatalogue / VNF_Catalogue / migration / migrate.js
1 /*******************************************************************************
2  * Copyright (c) 2017 Kumar Rishabh(penguinRaider) and others.
3  *
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Apache License, Version 2.0
6  * which accompanies this distribution, and is available at
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *******************************************************************************/
9
10 var knex = require('knex')({
11     client: 'mysql',
12     connection: {
13         host     : process.env.DB_HOST,
14         user     : process.env.DB_USER,
15         password : process.env.DB_PASSWORD,
16         database : process.env.DB_DATABASE,
17         charset  : 'utf8'
18     }
19 });
20 var Schema = require('./schema');
21 var sequence = require('when/sequence');
22 var _ = require('lodash');
23 function createTable(tableName) {
24     return knex.schema.createTable(tableName, function (table) {
25     var column;
26     var columnKeys = _.keys(Schema[tableName]);
27     _.each(columnKeys, function (key) {
28         if (Schema[tableName][key].type === 'text' && Schema[tableName][key].hasOwnProperty('fieldtype')) {
29         column = table[Schema[tableName][key].type](key, Schema[tableName][key].fieldtype);
30         }
31         else if (Schema[tableName][key].type === 'enum' && Schema[tableName][key].hasOwnProperty('values') && Schema[tableName][key].nullable === true) {
32         console.log(Schema[tableName][key].values);
33         column = table[Schema[tableName][key].type](key, Schema[tableName][key].values).nullable();
34         }
35         else if (Schema[tableName][key].type === 'enum' && Schema[tableName][key].hasOwnProperty('values')) {
36         console.log(Schema[tableName][key].values);
37         column = table[Schema[tableName][key].type](key, Schema[tableName][key].values).notNullable();
38         }
39         else if (Schema[tableName][key].type === 'string' && Schema[tableName][key].hasOwnProperty('maxlength')) {
40         column = table[Schema[tableName][key].type](key, Schema[tableName][key].maxlength);
41         }
42         else {
43         column = table[Schema[tableName][key].type](key);
44         }
45         if (Schema[tableName][key].hasOwnProperty('nullable') && Schema[tableName][key].nullable === true) {
46         column.nullable();
47         }
48         else {
49         column.notNullable();
50         }
51         if (Schema[tableName][key].hasOwnProperty('primary') && Schema[tableName][key].primary === true) {
52         column.primary();
53         }
54         if (Schema[tableName][key].hasOwnProperty('unique') && Schema[tableName][key].unique) {
55         column.unique();
56         }
57         if (Schema[tableName][key].hasOwnProperty('unsigned') && Schema[tableName][key].unsigned) {
58         column.unsigned();
59         }
60         if (Schema[tableName][key].hasOwnProperty('references')) {
61         column.references(Schema[tableName][key].references);
62         }
63         if (Schema[tableName][key].hasOwnProperty('defaultTo')) {
64         column.defaultTo(Schema[tableName][key].defaultTo);
65         }
66     });
67     });
68 }
69 function createTables () {
70     var tables = [];
71     var tableNames = _.keys(Schema);
72     tables = _.map(tableNames, function (tableName) {
73     return function () {
74         return createTable(tableName);
75     };
76     });
77     return sequence(tables);
78 }
79 createTables()
80 .then(function() {
81     console.log('Tables created!!');
82     process.exit(0);
83 })
84 .catch(function (error) {
85     throw error;
86 });