Skip to content
Snippets Groups Projects
Employee.ts 1.41 KiB
Newer Older
alrwasheda's avatar
alrwasheda committed
import { DataTypes, Model, Optional, Sequelize } from "sequelize";

interface EmployeeAttributes {
  id: string;
  email: string;
  first_name: string;
  last_name: string;
  password: string;
  role: string;
}
export interface EmployeeInput extends Optional<EmployeeAttributes, "id"> {}
class Employee
  extends Model<EmployeeAttributes, EmployeeInput>
  implements EmployeeAttributes
{
  declare id: string;
  declare email: string;
  declare first_name: string;
  declare last_name: string;
  declare password: string;
  declare role: string;
  declare readonly createdAt: Date;
  declare readonly updatedAt: Date;
}
export const initEmployee = (sequelizeConnection: Sequelize) => {
alrwasheda's avatar
alrwasheda committed
  Employee.init(
    {
      id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true,
        allowNull: false,
      },
      email: {
        type: new DataTypes.STRING(),
        allowNull: false,
        unique: true,
      },
      first_name: {
        type: new DataTypes.STRING(),
        allowNull: false,
      },
      last_name: {
        type: new DataTypes.STRING(),
        allowNull: false,
      },
      password: {
        type: new DataTypes.STRING(),
        allowNull: false,
      },
      role: {
        type: new DataTypes.STRING(),
        allowNull: false,
      },
    },
    {
      tableName: "employee",
      sequelize: sequelizeConnection,
    }
  );
};

export default Employee;