File: //var/www/javago-api-updates/src/models/index.model.js
import { readdirSync } from "fs";
import { basename, dirname } from "path";
import { fileURLToPath } from "url";
import UserDB from "../models/users.model.js";
import SizeDB from "../models/sizes.model.js";
import CafeMenuDB from "./cafe_menu.model.js";
import CafeDB from "../models/cafes.model.js";
import AddonDB from "../models/addons.model.js";
import GroupDB from "../models/groups.model.js";
import OrderDB from "../models/orders.model.js";
import AddonSizeDB from "../models/addon_sizes.model.js";
import GroupCafeDB from "../models/group_cafes.model.js";
import CafeTimingDB from "../models/cafe_timings.model.js";
import GroupMemberDB from "../models/group_members.model.js";
import InHouseItemDB from "../models/in_house_items.model.js";
import InHouseOrderDB from "../models/in_house_order.model.js";
import UserFavoriteCafeDB from "./user_favorite_cafes.model.js";
import CafeMenuItemDB from "../models/cafe_menu_items.model.js";
import CafeItemAddonDB from "../models/cafe_item_addons.model.js";
import DiscountDB from "../models/discount.model.js";
import GroupCoffeeRunDB from "../models/group_coffee_run.model.js";
import CafeSuggestedItemDB from "../models/suggested_items.model.js";
import NotificationListDB from "../models/notification_list.model.js";
import InHouseItemTypeDB from "../models/in_house_item_type.model.js";
import LoyaltyStampDB from "../models/manage_loyalty_stamps.model.js";
import CafeMenuItemSizeDB from "../models/cafe_menu_item_sizes.model.js";
import InHouseOrderItemsDB from "../models/in_house_order_items.model.js";
import AddonSizeCafeItemDB from "../models/addon_size_cafe_items.model.js";
import CafeItemAddonSizeDB from "../models/cafe_item_addon_sizes.model.js";
import PreDefinedImageDB from "../models/pre_defined_item_images.model.js";
import CafeGoToOrdersDB from "../models/cafe_go_to_orders.model.js";
import CoffeeRunInHouseOrders from "./coffee_run_inhouse_order.model.js";
import CafeClickCollectTiming from "../models/CafeClickCollectTiming.model.js";
import CafeManagement from "../models/CafeManagement.model.js";
import MenuCategoryOrder from "../models/MenuCategoryOrder.model.js";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
InHouseOrderDB.belongsTo(UserDB, { foreignKey: "id" });
UserDB.hasMany(InHouseOrderDB, { foreignKey: "user_id" });
// Coffee Run in house orders
CoffeeRunInHouseOrders.belongsTo(UserDB, { foreignKey: "user_id" });
CoffeeRunInHouseOrders.belongsTo(GroupDB, { foreignKey: "group_id" });
GroupCoffeeRunDB.belongsTo(CoffeeRunInHouseOrders, {
foreignKey: "in_house_order_id",
onDelete: "SET NULL",
});
// Cafe Go To Order relationship goes here
CafeGoToOrdersDB.belongsTo(UserDB, {
foreignKey: "user_id",
onDelete: "CASCADE",
});
CafeGoToOrdersDB.belongsTo(CafeDB, {
foreignKey: "cafe_id",
onDelete: "CASCADE",
});
CafeDB.hasMany(CafeGoToOrdersDB, { foreignKey: "cafe_id" });
// Group module relationship goes here
GroupDB.belongsTo(UserDB, { foreignKey: "created_by", as: "created_by_data" });
GroupDB.hasMany(GroupMemberDB, { foreignKey: "group_id", as: "group_details" });
GroupMemberDB.belongsTo(UserDB, { foreignKey: "user_id", as: "user_data" });
GroupDB.hasMany(GroupCafeDB, { foreignKey: "group_id", as: "group_cafe" });
GroupCafeDB.belongsTo(CafeDB, { foreignKey: "cafe_id", as: "cafe_data" });
CafeDB.hasMany(GroupCafeDB, { foreignKey: "cafe_id" });
UserDB.hasMany(GroupMemberDB, { foreignKey: "user_id" });
// In House module relationship goes here
InHouseItemDB.hasMany(InHouseItemTypeDB, { foreignKey: "in_house_item_id" });
InHouseItemTypeDB.belongsTo(InHouseItemDB, { foreignKey: "in_house_item_id" });
InHouseOrderItemsDB.belongsTo(InHouseOrderDB, {
foreignKey: "in_house_order_id",
});
InHouseOrderDB.hasMany(InHouseOrderItemsDB, {
foreignKey: "in_house_order_id",
});
// cafe module relationship goes here
CafeDB.hasMany(CafeTimingDB, { foreignKey: "cafe_id", as: "time_sheet_data" });
CafeDB.hasMany(CafeClickCollectTiming, {
foreignKey: "cafe_id",
});
CafeClickCollectTiming.belongsTo(CafeDB, {
foreignKey: "cafe_id",
as: "cafe_data",
});
CafeMenuDB.hasMany(CafeMenuItemDB, {
foreignKey: "cafe_menu_id",
as: "item_data",
});
CafeMenuItemDB.belongsTo(PreDefinedImageDB, {
foreignKey: "item_image_id",
as: "image_data",
});
CafeMenuItemDB.belongsTo(CafeDB, { foreignKey: "cafe_id", as: "cafe_data" });
CafeDB.hasMany(CafeMenuItemDB, { foreignKey: "cafe_id" });
UserFavoriteCafeDB.belongsTo(CafeDB, {
foreignKey: "cafe_id",
as: "user_favorite_cafes",
});
CafeDB.hasMany(UserFavoriteCafeDB, { foreignKey: "cafe_id" });
UserDB.hasMany(UserFavoriteCafeDB, { foreignKey: "user_id" });
UserFavoriteCafeDB.belongsTo(UserDB, { foreignKey: "user_id" });
CafeMenuItemDB.hasMany(CafeItemAddonDB, { foreignKey: "item_id" });
AddonDB.hasMany(CafeItemAddonDB, { foreignKey: "addon_id" });
CafeMenuItemDB.hasMany(CafeItemAddonDB, { foreignKey: "item_id" });
CafeMenuItemDB.hasMany(CafeItemAddonSizeDB, { foreignKey: "item_id" });
CafeItemAddonDB.hasMany(CafeItemAddonSizeDB, { foreignKey: "item_addon_id" });
CafeItemAddonDB.belongsTo(AddonDB, { foreignKey: "addon_id" });
CafeItemAddonDB.belongsTo(CafeMenuItemDB, { foreignKey: "item_id" });
CafeMenuItemDB.hasMany(CafeMenuItemSizeDB, { foreignKey: "item_id" });
CafeMenuItemSizeDB.belongsTo(SizeDB, { foreignKey: "size_id" });
CafeMenuItemDB.hasMany(CafeSuggestedItemDB, { foreignKey: "item_id" });
CafeSuggestedItemDB.belongsTo(CafeMenuItemDB, {
foreignKey: "suggested_item_id",
});
CafeDB.hasOne(CafeManagement, { foreignKey: "cafe_id" });
CafeManagement.belongsTo(CafeDB, { foreignKey: "cafe_id" });
CafeDB.hasMany(MenuCategoryOrder, { foreignKey: "cafe_id" });
MenuCategoryOrder.belongsTo(CafeDB, { foreignKey: "cafe_id" });
// Notification relationship goes here
AddonDB.hasMany(AddonSizeDB, { foreignKey: "addon_id" });
AddonSizeDB.belongsTo(AddonDB, { foreignKey: "addon_id" });
NotificationListDB.belongsTo(UserDB, { foreignKey: "sender_id", as: "sender" });
NotificationListDB.belongsTo(UserDB, {
foreignKey: "receiver_id",
as: "reciever",
});
CafeMenuItemDB.hasMany(AddonSizeCafeItemDB, { foreignKey: "item_id" });
AddonSizeCafeItemDB.belongsTo(CafeMenuItemDB, { foreignKey: "item_id" });
AddonSizeDB.hasMany(AddonSizeCafeItemDB, { foreignKey: "addon_size_id" });
AddonSizeCafeItemDB.belongsTo(AddonSizeDB, { foreignKey: "addon_size_id" });
// order module relationship goes here
OrderDB.belongsTo(CafeDB, { foreignKey: "cafe_id" });
OrderDB.belongsTo(UserDB, { foreignKey: "user_id" });
OrderDB.belongsTo(GroupDB, { foreignKey: "group_id" });
CafeDB.hasMany(LoyaltyStampDB, { foreignKey: "cafe_id" });
GroupCoffeeRunDB.belongsTo(CafeDB, { foreignKey: "cafe_id" });
GroupCoffeeRunDB.belongsTo(GroupDB, { foreignKey: "group_id" });
GroupCoffeeRunDB.belongsTo(OrderDB, { foreignKey: "order_id" });
DiscountDB.belongsTo(OrderDB, {
foreignKey: "orderId",
targetKey: "order_number",
});
// GroupCoffeeRunDB.belongsTo(CoffeeRunInHouseOrders, { foreignKey: 'in_house_order_id' })
GroupCoffeeRunDB.belongsTo(UserDB, { foreignKey: "user_id", as: "user_data" });
GroupCoffeeRunDB.belongsTo(UserDB, {
foreignKey: "request_created_by",
as: "creator_data",
});
NotificationListDB.belongsTo(GroupCoffeeRunDB, {
foreignKey: "reference_id",
as: "group_coffee_run_data",
});