ExpressJs

⌘K
  1. Home
  2. Docs
  3. ExpressJs
  4. Authentication and Permis...
  5. 02. মডেল বানাই

02. মডেল বানাই

Step 2: Create the database models

Let’s create the models for User, Group, and Permission:

models/user.model.js

// models/user.model.js
module.exports = (sequelize, Sequelize) => {
  const User = sequelize.define("User", {
    username: {
      type: Sequelize.STRING,
      allowNull: false,
      unique: true,
    },
    email: {
      type: Sequelize.STRING,
      allowNull: false,
      unique: true,
    },
    password: {
      type: Sequelize.STRING,
      allowNull: false,
    },
  });

  return User;
};

models/group.model.js

// models/group.model.js
module.exports = (sequelize, Sequelize) => {
  const Group = sequelize.define("Group", {
    name: {
      type: Sequelize.STRING,
      allowNull: false,
      unique: true,
    },
  });

  return Group;
};

// models/permission.model.js
module.exports = (sequelize, Sequelize) => {
  const Permission = sequelize.define("Permission", {
    name: {
      type: Sequelize.STRING,
      allowNull: false,
      unique: true,
    },
    codename: {
      type: Sequelize.STRING,
      allowNull: false,
      unique: true,
    },
  });

  return Permission;
};

Step 3: Set up relationships between models

Now, let’s set up the relationships between our models:


// ... (previous code)
// models/index.js
const { Sequelize } = require('sequelize');
const dotenv = require('dotenv');

dotenv.config();

const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, {
  host: process.env.DB_HOST,
  dialect: 'mysql',
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

// Import model definitions
db.User = require('./user.model')(sequelize, Sequelize);
db.Group = require('./group.model')(sequelize, Sequelize);
db.Permission = require('./permission.model')(sequelize, Sequelize);


// ... (New code)
// User-Group Many-to-Many relationship
db.User.belongsToMany(db.Group, { through: 'UserGroups' });
db.Group.belongsToMany(db.User, { through: 'UserGroups' });

// User-Permission Many-to-Many relationship
db.User.belongsToMany(db.Permission, { through: 'UserPermissions' });
db.Permission.belongsToMany(db.User, { through: 'UserPermissions' });

// Group-Permission Many-to-Many relationship
db.Group.belongsToMany(db.Permission, { through: 'GroupPermissions' });
db.Permission.belongsToMany(db.Group, { through: 'GroupPermissions' });

module.exports = db;

How can we help?