You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.5 KiB
108 lines
2.5 KiB
const { DataTypes } = require('sequelize');
|
|
const sequelize = require('../config/database');
|
|
|
|
const Menu = sequelize.define('Menu', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
autoIncrement: true
|
|
},
|
|
nom: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: false,
|
|
validate: {
|
|
notEmpty: {
|
|
msg: 'Le nom du plat est requis'
|
|
},
|
|
len: {
|
|
args: [2, 255],
|
|
msg: 'Le nom doit contenir entre 2 et 255 caractères'
|
|
}
|
|
}
|
|
},
|
|
commentaire: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
validate: {
|
|
len: {
|
|
args: [0, 1000],
|
|
msg: 'Le commentaire ne doit pas dépasser 1000 caractères'
|
|
}
|
|
}
|
|
},
|
|
prix: {
|
|
type: DataTypes.DECIMAL(10, 2),
|
|
allowNull: false,
|
|
validate: {
|
|
isDecimal: {
|
|
msg: 'Le prix doit être un nombre décimal'
|
|
},
|
|
min: {
|
|
args: [0],
|
|
msg: 'Le prix doit être positif'
|
|
}
|
|
}
|
|
},
|
|
categorie_id: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
validate: {
|
|
isInt: {
|
|
msg: 'L\'ID de catégorie doit être un entier'
|
|
},
|
|
min: {
|
|
args: [1],
|
|
msg: 'L\'ID de catégorie doit être positif'
|
|
}
|
|
}
|
|
},
|
|
disponible: {
|
|
type: DataTypes.BOOLEAN,
|
|
defaultValue: true,
|
|
allowNull: false
|
|
},
|
|
image_url: {
|
|
type: DataTypes.STRING(500),
|
|
allowNull: true,
|
|
validate: {
|
|
isUrl: {
|
|
msg: 'L\'URL de l\'image doit être valide'
|
|
}
|
|
}
|
|
},
|
|
ingredients: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true
|
|
},
|
|
allergenes: {
|
|
type: DataTypes.STRING(500),
|
|
allowNull: true
|
|
},
|
|
calories: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true,
|
|
validate: {
|
|
min: {
|
|
args: [0],
|
|
msg: 'Les calories doivent être positives'
|
|
}
|
|
}
|
|
},
|
|
temps_preparation: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true,
|
|
validate: {
|
|
min: {
|
|
args: [1],
|
|
msg: 'Le temps de préparation doit être positif'
|
|
}
|
|
}
|
|
}
|
|
}, {
|
|
tableName: 'menus',
|
|
timestamps: true,
|
|
createdAt: 'created_at',
|
|
updatedAt: 'updated_at'
|
|
});
|
|
|
|
module.exports = Menu;
|
|
|