const { DataTypes } = require('sequelize');
const sequelize = require('../config/database');


const Table = sequelize.define('Table', {
    id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    nom: {
        type: DataTypes.STRING(100),
        allowNull: false,
        validate: {
            notEmpty: {
                msg: 'Table name cannot be empty'
            },
            len: {
                args: [1, 100],
                msg: 'Table name must be between 1 and 100 characters'
            }
        }
    },
    capacity: {
        type: DataTypes.INTEGER,
        allowNull: true,
        defaultValue: 4,
        validate: {
            min: {
                args: [1],
                msg: 'Capacity must be at least 1'
            },
            max: {
                args: [20],
                msg: 'Capacity cannot exceed 20'
            }
        }
    },
    status: {
        type: DataTypes.ENUM('available', 'occupied', 'reserved', 'maintenance'),
        defaultValue: 'available',
        allowNull: false
    },
    location: {
        type: DataTypes.STRING(50),
        allowNull: true,
        validate: {
            len: {
                args: [0, 50],
                msg: 'Location must be less than 50 characters'
            }
        }
    }
}, {
    tableName: 'tables',
    timestamps: true,
    createdAt: 'created_at',
    updatedAt: 'updated_at',
    indexes: [
        {
            fields: ['status']
        },
        {
            fields: ['nom'],
            unique: true
        }
    ]
});

module.exports = Table;
