Dealer_Onboarding_Backend/src/database/models/ZoneManager.ts

68 lines
1.7 KiB
TypeScript

import { Model, DataTypes, Sequelize } from 'sequelize';
export interface ZoneManagerAttributes {
id: string;
zoneId: string;
userId: string;
managerType: string;
isActive: boolean;
assignedAt: Date;
}
export interface ZoneManagerInstance extends Model<ZoneManagerAttributes>, ZoneManagerAttributes { }
export default (sequelize: Sequelize) => {
const ZoneManager = sequelize.define<ZoneManagerInstance>('ZoneManager', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
zoneId: {
type: DataTypes.UUID,
allowNull: false,
references: {
model: 'zones',
key: 'id'
}
},
userId: {
type: DataTypes.UUID,
allowNull: false,
references: {
model: 'users',
key: 'id'
}
},
managerType: {
type: DataTypes.STRING,
allowNull: false
},
isActive: {
type: DataTypes.BOOLEAN,
defaultValue: true
},
assignedAt: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW
}
}, {
tableName: 'zone_managers',
timestamps: true,
updatedAt: false
});
(ZoneManager as any).associate = (models: any) => {
ZoneManager.belongsTo(models.Zone, {
foreignKey: 'zoneId',
as: 'zone'
});
ZoneManager.belongsTo(models.User, {
foreignKey: 'userId',
as: 'user'
});
};
return ZoneManager;
};