const sequelize = require('../config/database'); const User = require('./User'); const Item = require('./Item'); const Rental = require('./Rental'); const Message = require('./Message'); const ItemRequest = require('./ItemRequest'); const ItemRequestResponse = require('./ItemRequestResponse'); User.hasMany(Item, { as: 'ownedItems', foreignKey: 'ownerId' }); Item.belongsTo(User, { as: 'owner', foreignKey: 'ownerId' }); User.hasMany(Rental, { as: 'rentalsAsRenter', foreignKey: 'renterId' }); User.hasMany(Rental, { as: 'rentalsAsOwner', foreignKey: 'ownerId' }); Item.hasMany(Rental, { as: 'rentals', foreignKey: 'itemId' }); Rental.belongsTo(Item, { as: 'item', foreignKey: 'itemId' }); Rental.belongsTo(User, { as: 'renter', foreignKey: 'renterId' }); Rental.belongsTo(User, { as: 'owner', foreignKey: 'ownerId' }); User.hasMany(Message, { as: 'sentMessages', foreignKey: 'senderId' }); User.hasMany(Message, { as: 'receivedMessages', foreignKey: 'receiverId' }); Message.belongsTo(User, { as: 'sender', foreignKey: 'senderId' }); Message.belongsTo(User, { as: 'receiver', foreignKey: 'receiverId' }); Message.hasMany(Message, { as: 'replies', foreignKey: 'parentMessageId' }); Message.belongsTo(Message, { as: 'parentMessage', foreignKey: 'parentMessageId' }); User.hasMany(ItemRequest, { as: 'itemRequests', foreignKey: 'requesterId' }); ItemRequest.belongsTo(User, { as: 'requester', foreignKey: 'requesterId' }); User.hasMany(ItemRequestResponse, { as: 'itemRequestResponses', foreignKey: 'responderId' }); ItemRequest.hasMany(ItemRequestResponse, { as: 'responses', foreignKey: 'itemRequestId' }); ItemRequestResponse.belongsTo(User, { as: 'responder', foreignKey: 'responderId' }); ItemRequestResponse.belongsTo(ItemRequest, { as: 'itemRequest', foreignKey: 'itemRequestId' }); ItemRequestResponse.belongsTo(Item, { as: 'existingItem', foreignKey: 'existingItemId' }); module.exports = { sequelize, User, Item, Rental, Message, ItemRequest, ItemRequestResponse };