1
0
Files
OpenWall/server/models/ShoppingItem.js
2025-07-18 10:48:00 +02:00

51 lines
1.1 KiB
JavaScript

const { DataTypes } = require('sequelize');
module.exports = (sequelize) => {
const ShoppingItem = sequelize.define('ShoppingItem', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notEmpty: true,
},
},
amount: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: '1',
},
checked: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
checkedAt: {
type: DataTypes.DATE,
allowNull: true,
},
date: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
}, {
timestamps: true,
hooks: {
beforeUpdate: (item, options) => {
// Set checkedAt timestamp when item is checked
if (item.checked && !item.previous('checked')) {
item.checkedAt = new Date();
} else if (!item.checked) {
item.checkedAt = null;
}
},
},
});
return ShoppingItem;
};