97 lines
2.9 KiB
JavaScript
97 lines
2.9 KiB
JavaScript
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");
|
|
const UserAddress = require("./UserAddress");
|
|
const ConditionCheck = require("./ConditionCheck");
|
|
const AlphaInvitation = require("./AlphaInvitation");
|
|
|
|
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",
|
|
});
|
|
|
|
User.hasMany(UserAddress, { as: "addresses", foreignKey: "userId" });
|
|
UserAddress.belongsTo(User, { as: "user", foreignKey: "userId" });
|
|
|
|
// ConditionCheck associations
|
|
Rental.hasMany(ConditionCheck, {
|
|
as: "conditionChecks",
|
|
foreignKey: "rentalId",
|
|
});
|
|
ConditionCheck.belongsTo(Rental, { as: "rental", foreignKey: "rentalId" });
|
|
User.hasMany(ConditionCheck, {
|
|
as: "conditionChecks",
|
|
foreignKey: "submittedBy",
|
|
});
|
|
ConditionCheck.belongsTo(User, {
|
|
as: "submittedByUser",
|
|
foreignKey: "submittedBy",
|
|
});
|
|
|
|
// AlphaInvitation associations
|
|
AlphaInvitation.belongsTo(User, {
|
|
as: "user",
|
|
foreignKey: "usedBy",
|
|
});
|
|
User.hasMany(AlphaInvitation, {
|
|
as: "alphaInvitations",
|
|
foreignKey: "usedBy",
|
|
});
|
|
|
|
module.exports = {
|
|
sequelize,
|
|
User,
|
|
Item,
|
|
Rental,
|
|
Message,
|
|
ItemRequest,
|
|
ItemRequestResponse,
|
|
UserAddress,
|
|
ConditionCheck,
|
|
AlphaInvitation,
|
|
};
|