Skip to content

Commit

Permalink
chore: setup model migration role and user
Browse files Browse the repository at this point in the history
  • Loading branch information
ahmadlaiq committed Apr 20, 2024
1 parent 495aa6b commit 9d0dc43
Show file tree
Hide file tree
Showing 7 changed files with 175 additions and 5 deletions.
29 changes: 29 additions & 0 deletions migrations/20240420014444-create-role.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'use strict';
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable('Roles', {
id: {
allowNull: false,
primaryKey: true,
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
async down(queryInterface, Sequelize) {
await queryInterface.dropTable('Roles');
}
};
49 changes: 49 additions & 0 deletions migrations/20240420014544-create-user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
'use strict';
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable('Users', {
id: {
allowNull: false,
primaryKey: true,
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4
},
name: {
type: Sequelize.STRING,
unique: true,
allowNull: false,
},
email: {
type: Sequelize.STRING,
unique: true,
allowNull: false,
},
password: {
type: Sequelize.STRING,
allowNull: false,
},
role_id: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: 'Roles',
key: 'id'
},
onDelete: 'CASCADE',
onUpdate: 'CASCADE'
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
async down(queryInterface, Sequelize) {
await queryInterface.dropTable('Users');
}
};
29 changes: 29 additions & 0 deletions models/role.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'use strict';
const {
Model,
Sequelize
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Role extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here
}
}
Role.init({
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
},
name: DataTypes.STRING
}, {
sequelize,
modelName: 'Role',
});
return Role;
};
23 changes: 23 additions & 0 deletions models/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class User extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here
}
}
User.init({
name: DataTypes.STRING
}, {
sequelize,
modelName: 'User',
});
return User;
};
21 changes: 17 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"morgan": "^1.10.0",
"mysql2": "^3.9.5",
"sequelize": "^6.37.3",
"sequelize-cli": "^6.6.2"
"sequelize-cli": "^6.6.2",
"uuid": "^9.0.1"
}
}
26 changes: 26 additions & 0 deletions seeders/20240420025434-demo-role.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use strict';

const {v4} = require('uuid');

/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
return queryInterface.bulkInsert('Roles', [{
id: v4(),
name: 'user',
createdAt: new Date(),
updatedAt: new Date(),
},
{
id: v4(),
name: 'admin',
createdAt: new Date(),
updatedAt: new Date(),
},
], {});
},

async down(queryInterface, Sequelize) {
return queryInterface.bulkDelete('Roles', null, {});
}
};

0 comments on commit 9d0dc43

Please sign in to comment.