const { DataTypes } = require('sequelize'); const sequelize = require('../config/database'); const Item = sequelize.define('Item', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true }, name: { type: DataTypes.STRING, allowNull: false }, description: { type: DataTypes.TEXT, allowNull: false }, tags: { type: DataTypes.ARRAY(DataTypes.STRING), defaultValue: [] }, pickUpAvailable: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, localDeliveryAvailable: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, localDeliveryRadius: { type: DataTypes.INTEGER, validate: { min: 1, max: 100 } }, shippingAvailable: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, inPlaceUseAvailable: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, pricePerHour: { type: DataTypes.DECIMAL(10, 2) }, pricePerDay: { type: DataTypes.DECIMAL(10, 2) }, replacementCost: { type: DataTypes.DECIMAL(10, 2), allowNull: false }, location: { type: DataTypes.STRING, allowNull: false }, address1: { type: DataTypes.STRING }, address2: { type: DataTypes.STRING }, city: { type: DataTypes.STRING }, state: { type: DataTypes.STRING }, zipCode: { type: DataTypes.STRING }, country: { type: DataTypes.STRING }, latitude: { type: DataTypes.DECIMAL(10, 8) }, longitude: { type: DataTypes.DECIMAL(11, 8) }, images: { type: DataTypes.ARRAY(DataTypes.STRING), defaultValue: [] }, availability: { type: DataTypes.BOOLEAN, defaultValue: true }, specifications: { type: DataTypes.JSONB, defaultValue: {} }, rules: { type: DataTypes.TEXT }, minimumRentalDays: { type: DataTypes.INTEGER, defaultValue: 1 }, maximumRentalDays: { type: DataTypes.INTEGER }, needsTraining: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, unavailablePeriods: { type: DataTypes.JSONB, defaultValue: [] }, ownerId: { type: DataTypes.UUID, allowNull: false, references: { model: 'Users', key: 'id' } } }); module.exports = Item;