diff --git a/backend/app.js b/backend/app.js index d2ed579cf0a5af595795b7843d5ea80da7c4a6d8..8431a2a2755b04a3490bfb99307af84e0fe12be3 100644 --- a/backend/app.js +++ b/backend/app.js @@ -14,7 +14,6 @@ const Role = db.role; // force: true will drop the table if it already exists db.sequelize.sync({force: true}).then(() => { console.log('Drop and Resync with { force: true }'); - initial(); }); var routes = require('./router/router') @@ -26,26 +25,4 @@ var server = app.listen(process.env.PORT, function () { var port = server.address().port console.log("App listening at http://%s:%s", host, port) -}) - -function initial(){ - Role.create({ - id: 1, - name: 'Master Admin Diskominfo' - }); - - Role.create({ - id: 2, - name: 'Admin Diskominfo' - }); - - Role.create({ - id: 3, - name: 'Admin Dinas' - }); - - Role.create({ - id: 4, - name: 'Member Dinas' - }) -} \ No newline at end of file +}) \ No newline at end of file diff --git a/backend/config/config.js b/backend/config/app.config.js similarity index 100% rename from backend/config/config.js rename to backend/config/app.config.js diff --git a/backend/config/config.json b/backend/config/config.json new file mode 100644 index 0000000000000000000000000000000000000000..3cb66f7aedff3f70ea3e76fd31bd96e70ccc8e05 --- /dev/null +++ b/backend/config/config.json @@ -0,0 +1,23 @@ +{ + "development": { + "username": "postgres", + "password": "hue", + "database": "jabar_innov_monev_2", + "host": "127.0.0.1", + "dialect": "postgresql" + }, + "test": { + "username": "postgres", + "password": "hue", + "database": "jabar_innov_monev_2", + "host": "127.0.0.1", + "dialect": "postgresql" + }, + "production": { + "username": "postgres", + "password": "hue", + "database": "jabar_innov_monev_2", + "host": "127.0.0.1", + "dialect": "postgresql" + } +} diff --git a/backend/config/db.config.js b/backend/config/db.config.js index 407da55c31c9ed6c8f7088aa8cae25a84f8fbbab..ab0d9e984a0ac196b5756be79546b2a410f76a2c 100644 --- a/backend/config/db.config.js +++ b/backend/config/db.config.js @@ -17,8 +17,8 @@ const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; -db.user = require('../model/user.model.js')(sequelize, Sequelize); -db.role = require('../model/role.model.js')(sequelize, Sequelize); +db.user = require('../models/user')(sequelize, Sequelize); +db.role = require('../models/role')(sequelize, Sequelize); db.user.belongsTo(db.role, {foreignKey: 'roleId'}); diff --git a/backend/controller/authController.js b/backend/controller/authController.js index 1229722495ae423586b59a3196193d17d2089d93..dfc509fcc88ed66948477447cafa9b5193728c79 100644 --- a/backend/controller/authController.js +++ b/backend/controller/authController.js @@ -1,5 +1,5 @@ const db = require('../config/db.config.js'); -const config = require('../config/config.js'); +const config = require('../config/app.config.js'); var jwt = require('jsonwebtoken'); var bcrypt = require('bcryptjs'); const User = db.user; diff --git a/backend/controller/testController.js b/backend/controller/testController.js index b4364164da46e4ee4fe2b6724c3d2623ea72acee..49bf8e9859b4e1b76fb438729973088780a5e282 100644 --- a/backend/controller/testController.js +++ b/backend/controller/testController.js @@ -1,5 +1,5 @@ const db = require('../config/db.config.js'); -const config = require('../config/config.js'); +const config = require('../config/app.config.js'); const User = db.user; const Role = db.role; diff --git a/backend/migrations/20190328063216-create-user.js b/backend/migrations/20190328063216-create-user.js new file mode 100644 index 0000000000000000000000000000000000000000..84fcf7c5d9b06f610cd6686fbb7c55c9dca43d20 --- /dev/null +++ b/backend/migrations/20190328063216-create-user.js @@ -0,0 +1,36 @@ +'use strict'; +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('users', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + nama: { + type: Sequelize.STRING + }, + email: { + type: Sequelize.STRING + }, + password: { + type: Sequelize.STRING + }, + username: { + type: Sequelize.STRING + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE + } + }); + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('users'); + } +}; \ No newline at end of file diff --git a/backend/migrations/20190328063341-create-role.js b/backend/migrations/20190328063341-create-role.js new file mode 100644 index 0000000000000000000000000000000000000000..256d358dce4b9a85605163b38faa6e8e3e7f8410 --- /dev/null +++ b/backend/migrations/20190328063341-create-role.js @@ -0,0 +1,27 @@ +'use strict'; +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('roles', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + nama_role: { + type: Sequelize.STRING + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE + } + }); + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('roles'); + } +}; \ No newline at end of file diff --git a/backend/migrations/20190328063542-insert-roles.js b/backend/migrations/20190328063542-insert-roles.js new file mode 100644 index 0000000000000000000000000000000000000000..f6d5d255d1724db05664511ffab0d8e99a0c479a --- /dev/null +++ b/backend/migrations/20190328063542-insert-roles.js @@ -0,0 +1,27 @@ +'use strict'; + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.bulkInsert('roles', [{ + nama_role: 'Master Admin Diskominfo', + createdAt: new Date(), + updatedAt: new Date() + },{ + nama_role: 'Admin Diskominfo', + createdAt: new Date(), + updatedAt: new Date() + },{ + nama_role: 'Admin Dinas', + createdAt: new Date(), + updatedAt: new Date() + },{ + nama_role: 'Member Dinas', + createdAt: new Date(), + updatedAt: new Date() + }]); + }, + + down: (queryInterface, Sequelize) => { + return queryInterface.bulkDelete('roles', null, {}); + } +}; diff --git a/backend/model/role.model.js b/backend/model/role.model.js deleted file mode 100644 index 0b24eed15494413ad20ba0eb41c4999c08ea2afa..0000000000000000000000000000000000000000 --- a/backend/model/role.model.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = (sequelize, Sequelize) => { - const Role = sequelize.define('roles', { - id: { - type: Sequelize.INTEGER, - primaryKey: true - }, - name: { - type: Sequelize.STRING - } - }); - - return Role; -} \ No newline at end of file diff --git a/backend/model/user.model.js b/backend/model/user.model.js deleted file mode 100644 index b92245a322ef2b8574e41b52ec6d8b194b676cbb..0000000000000000000000000000000000000000 --- a/backend/model/user.model.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = (sequelize, Sequelize) => { - const User = sequelize.define('users', { - name: { - type: Sequelize.STRING - }, - email: { - type: Sequelize.STRING - }, - password: { - type: Sequelize.STRING - }, - username: { - type: Sequelize.STRING - } - }); - - return User -} \ No newline at end of file diff --git a/backend/models/index.js b/backend/models/index.js new file mode 100644 index 0000000000000000000000000000000000000000..d22fdb5e903f2f4949e9758614a1a6aa9c1dfea3 --- /dev/null +++ b/backend/models/index.js @@ -0,0 +1,37 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const Sequelize = require('sequelize'); +const basename = path.basename(__filename); +const env = process.env.NODE_ENV || 'development'; +const config = require(__dirname + '/../config/app.config.json')[env]; +const db = {}; + +let sequelize; +if (config.use_env_variable) { + sequelize = new Sequelize(process.env[config.use_env_variable], config); +} else { + sequelize = new Sequelize(config.database, config.username, config.password, config); +} + +fs + .readdirSync(__dirname) + .filter(file => { + return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js'); + }) + .forEach(file => { + const model = sequelize['import'](path.join(__dirname, file)); + db[model.name] = model; + }); + +Object.keys(db).forEach(modelName => { + if (db[modelName].associate) { + db[modelName].associate(db); + } +}); + +db.sequelize = sequelize; +db.Sequelize = Sequelize; + +module.exports = db; diff --git a/backend/models/role.js b/backend/models/role.js new file mode 100644 index 0000000000000000000000000000000000000000..1f676f75cab11be82f5c8c7f7e2fc6d414bf88d5 --- /dev/null +++ b/backend/models/role.js @@ -0,0 +1,10 @@ +'use strict'; +module.exports = (sequelize, DataTypes) => { + const role = sequelize.define('role', { + nama_role: DataTypes.STRING + }, {}); + role.associate = function(models) { + // associations can be defined here + }; + return role; +}; \ No newline at end of file diff --git a/backend/models/user.js b/backend/models/user.js new file mode 100644 index 0000000000000000000000000000000000000000..c53354b69de8e75ced46a3179150857b34a756ab --- /dev/null +++ b/backend/models/user.js @@ -0,0 +1,13 @@ +'use strict'; +module.exports = (sequelize, DataTypes) => { + const user = sequelize.define('user', { + nama: DataTypes.STRING, + email: DataTypes.STRING, + password: DataTypes.STRING, + username: DataTypes.STRING + }, {}); + user.associate = function(models) { + models.user.belongsTo(models.Role); + }; + return user; +}; \ No newline at end of file diff --git a/backend/router/verifyJwtToken.js b/backend/router/verifyJwtToken.js index 9ddda869a2c3225da5421065783c05681e599898..1a04e8d994402330db2460d310fdf4207b52ac2c 100644 --- a/backend/router/verifyJwtToken.js +++ b/backend/router/verifyJwtToken.js @@ -1,5 +1,5 @@ const jwt = require('jsonwebtoken'); -const config = require('../config/config.js'); +const config = require('../config/app.config.js'); const db = require('../config/db.config.js'); const User = db.user; const Role = db.role; diff --git a/backend/router/verifySignUp.js b/backend/router/verifySignUp.js index 1a4502713dd19a10ece81f4c6fdc53d308938f1e..957209f79496ebfafca4f85587fc446ad0f69179 100644 --- a/backend/router/verifySignUp.js +++ b/backend/router/verifySignUp.js @@ -1,5 +1,5 @@ const db = require('../config/db.config.js'); -const config = require('../config/config.js'); +const config = require('../config/app.config.js'); const ROLEs = config.ROLEs; const User = db.user;