/** * Copyright (c) 2026 Niolla * All rights reserved. * * This source code is proprietary and confidential. * Unauthorized copying, modification, distribution, or use * of this file, via any medium, is strictly prohibited. */ // app/models/index.js const { Sequelize, DataTypes } = require("sequelize"); const dbConfig = require("../config/db.config"); const loggingOption = process.env.NODE_ENV === "development" ? console.log : false; const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, { host: dbConfig.HOST, port: dbConfig.PORT, dialect: dbConfig.DIALECT, pool: dbConfig.pool, logging: loggingOption, }); const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; /* Register db models */ // User and Authentication db.User = require("./user/user.model")(sequelize, DataTypes); db.Customer = require("./user/customer.model")(sequelize, DataTypes); db.BusinessCustomer = require("./user/businessCustomer.model")( sequelize, DataTypes, ); db.AuthSession = require("./user/authSession.model")(sequelize, DataTypes); db.UserIdentity = require("./user/userIdentity.model")(sequelize, DataTypes); db.UserActivity = require("./activities/userActivities.model")( sequelize, DataTypes, ); db.Profile = require("./user/profile.model")(sequelize, DataTypes); db.Address = require("./user/address.model")(sequelize, DataTypes); db.BusinessApplication = require("./user/businessApplication.model")( sequelize, DataTypes, ); db.BusinessContact = require("./user/businessContact.model")( sequelize, DataTypes, ); db.BusinessCreditAccount = require("./user/businessCreditAccount.model")( sequelize, DataTypes, ); db.SettlementTerm = require("./user/settlementTerm.model")( sequelize, DataTypes, ); // Uploads db.Upload = require("./upload/upload.model")(sequelize, DataTypes); // Roles and Permissions db.roles = require("./permission/role.model")(sequelize, DataTypes); db.permission = require("./permission/permission.model")(sequelize, DataTypes); db.rolePermission = require("./permission/rolePermission.model")( sequelize, DataTypes, ); db.userPermission = require("./permission/userPermission.model")( sequelize, DataTypes, ); db.UserRole = require("./permission/userRole.model")(sequelize, DataTypes); // Document Management db.Document = require("./document/document.model")(sequelize, DataTypes); db.DocumentType = require("./document/documentType.model")( sequelize, DataTypes, ); // Reference Numbers db.referenceNumber = require("./referenceNumbers/referenceNumber.model")( sequelize, DataTypes, ); // Notifications db.notification = require("./notification/notification.model")( sequelize, DataTypes, ); db.userNotification = require("./notification/userNotification.model")( sequelize, DataTypes, ); db.NotificationDelivery = require("./notification/notificationDelivery.model")( sequelize, DataTypes, ); // Catalogue and localized content db.Brand = require("./catalogue/brand.model")(sequelize, DataTypes); db.Category = require("./catalogue/category.model")(sequelize, DataTypes); db.CategoryTranslation = require("./catalogue/categoryTranslation.model")( sequelize, DataTypes, ); db.Product = require("./catalogue/product.model")(sequelize, DataTypes); db.ProductTranslation = require("./catalogue/productTranslation.model")( sequelize, DataTypes, ); db.ProductCategory = require("./catalogue/productCategory.model")( sequelize, DataTypes, ); db.ProductVariant = require("./catalogue/productVariant.model")( sequelize, DataTypes, ); db.ProductOption = require("./catalogue/productOption.model")( sequelize, DataTypes, ); db.ProductOptionValue = require("./catalogue/productOptionValue.model")( sequelize, DataTypes, ); db.VariantOptionValue = require("./catalogue/variantOptionValue.model")( sequelize, DataTypes, ); db.ProductAttribute = require("./catalogue/productAttribute.model")( sequelize, DataTypes, ); db.ProductMedia = require("./catalogue/productMedia.model")( sequelize, DataTypes, ); db.Collection = require("./catalogue/collection.model")(sequelize, DataTypes); db.CollectionTranslation = require("./catalogue/collectionTranslation.model")( sequelize, DataTypes, ); db.CollectionProduct = require("./catalogue/collectionProduct.model")( sequelize, DataTypes, ); db.SizeGuide = require("./catalogue/sizeGuide.model")(sequelize, DataTypes); db.ProductRelation = require("./catalogue/productRelation.model")( sequelize, DataTypes, ); db.ProductReview = require("./catalogue/productReview.model")( sequelize, DataTypes, ); db.Warehouse = require("./inventory/warehouse.model")(sequelize, DataTypes); db.InventoryBalance = require("./inventory/inventoryBalance.model")( sequelize, DataTypes, ); db.InventoryTransaction = require("./inventory/inventoryTransaction.model")( sequelize, DataTypes, ); db.InventoryReservation = require("./inventory/inventoryReservation.model")( sequelize, DataTypes, ); db.InventoryTransfer = require("./inventory/inventoryTransfer.model")( sequelize, DataTypes, ); db.BusinessTier = require("./pricing/businessTier.model")(sequelize, DataTypes); db.VariantBusinessPrice = require("./pricing/variantBusinessPrice.model")( sequelize, DataTypes, ); db.BusinessPriceTier = require("./pricing/businessPriceTier.model")( sequelize, DataTypes, ); db.Promotion = require("./merchandising/promotion.model")(sequelize, DataTypes); db.PromotionTarget = require("./merchandising/promotionTarget.model")( sequelize, DataTypes, ); db.Coupon = require("./merchandising/coupon.model")(sequelize, DataTypes); db.Banner = require("./merchandising/banner.model")(sequelize, DataTypes); db.BannerTranslation = require("./merchandising/bannerTranslation.model")( sequelize, DataTypes, ); db.Cart = require("./shopping/cart.model")(sequelize, DataTypes); db.CartItem = require("./shopping/cartItem.model")(sequelize, DataTypes); db.WishlistItem = require("./shopping/wishlistItem.model")( sequelize, DataTypes, ); db.CheckoutSession = require("./shopping/checkoutSession.model")( sequelize, DataTypes, ); db.CheckoutItem = require("./shopping/checkoutItem.model")( sequelize, DataTypes, ); db.ShippingZone = require("./shipping/shippingZone.model")( sequelize, DataTypes, ); db.ShippingZoneRegion = require("./shipping/shippingZoneRegion.model")( sequelize, DataTypes, ); db.ShippingMethod = require("./shipping/shippingMethod.model")( sequelize, DataTypes, ); db.ShippingRate = require("./shipping/shippingRate.model")( sequelize, DataTypes, ); db.Order = require("./commerce/order.model")(sequelize, DataTypes); db.OrderItem = require("./commerce/orderItem.model")(sequelize, DataTypes); db.Payment = require("./commerce/payment.model")(sequelize, DataTypes); db.PaymentAttempt = require("./commerce/paymentAttempt.model")( sequelize, DataTypes, ); db.PaymentWebhookEvent = require("./commerce/paymentWebhookEvent.model")( sequelize, DataTypes, ); db.Invoice = require("./commerce/invoice.model")(sequelize, DataTypes); db.Refund = require("./commerce/refund.model")(sequelize, DataTypes); db.RefundItem = require("./commerce/refundItem.model")(sequelize, DataTypes); db.ReturnRequest = require("./commerce/returnRequest.model")( sequelize, DataTypes, ); db.ReturnItem = require("./commerce/returnItem.model")(sequelize, DataTypes); db.CouponRedemption = require("./commerce/couponRedemption.model")( sequelize, DataTypes, ); db.RiderProfile = require("./logistics/riderProfile.model")( sequelize, DataTypes, ); db.Shipment = require("./logistics/shipment.model")(sequelize, DataTypes); db.ShipmentItem = require("./logistics/shipmentItem.model")( sequelize, DataTypes, ); db.ShipmentAssignment = require("./logistics/shipmentAssignment.model")( sequelize, DataTypes, ); db.ShipmentEvent = require("./logistics/shipmentEvent.model")( sequelize, DataTypes, ); db.ShipmentProof = require("./logistics/shipmentProof.model")( sequelize, DataTypes, ); db.LoyaltyAccount = require("./loyalty/loyaltyAccount.model")( sequelize, DataTypes, ); db.LoyaltyTier = require("./loyalty/loyaltyTier.model")(sequelize, DataTypes); db.LoyaltyTierHistory = require("./loyalty/loyaltyTierHistory.model")( sequelize, DataTypes, ); db.LoyaltyEarnRule = require("./loyalty/loyaltyEarnRule.model")( sequelize, DataTypes, ); db.LoyaltyLedgerEntry = require("./loyalty/loyaltyLedgerEntry.model")( sequelize, DataTypes, ); db.LoyaltyPointAllocation = require("./loyalty/loyaltyPointAllocation.model")( sequelize, DataTypes, ); db.LoyaltyReward = require("./loyalty/loyaltyReward.model")( sequelize, DataTypes, ); db.LoyaltyRedemption = require("./loyalty/loyaltyRedemption.model")( sequelize, DataTypes, ); db.Referral = require("./loyalty/referral.model")(sequelize, DataTypes); db.CustomerCouponEntitlement = require("./loyalty/customerCouponEntitlement.model")(sequelize, DataTypes); db.BusinessCreditLedgerEntry = require("./wholesale/businessCreditLedgerEntry.model")(sequelize, DataTypes); db.BusinessSettlement = require("./wholesale/businessSettlement.model")( sequelize, DataTypes, ); db.BusinessSettlementItem = require("./wholesale/businessSettlementItem.model")( sequelize, DataTypes, ); db.PaymentAllocation = require("./wholesale/paymentAllocation.model")( sequelize, DataTypes, ); db.SupportCategory = require("./support/supportCategory.model")(sequelize, DataTypes); db.SupportTicket = require("./support/supportTicket.model")(sequelize, DataTypes); db.SupportMessage = require("./support/supportMessage.model")(sequelize, DataTypes); db.SupportTicketEvent = require("./support/supportTicketEvent.model")(sequelize, DataTypes); db.SupportTicketLink = require("./support/supportTicketLink.model")(sequelize, DataTypes); db.SupportAttachment = require("./support/supportAttachment.model")(sequelize, DataTypes); db.SupportSlaPolicy = require("./support/supportSlaPolicy.model")(sequelize, DataTypes); db.SupportEscalation = require("./support/supportEscalation.model")(sequelize, DataTypes); db.HelpCategory = require("./help/helpCategory.model")(sequelize, DataTypes); db.HelpCategoryTranslation = require("./help/helpCategoryTranslation.model")(sequelize, DataTypes); db.HelpArticle = require("./help/helpArticle.model")(sequelize, DataTypes); db.HelpArticleTranslation = require("./help/helpArticleTranslation.model")(sequelize, DataTypes); db.NewsletterSubscription = require("./marketing/newsletterSubscription.model")(sequelize, DataTypes); db.ProductInteractionEvent = require("./recommendation/productInteractionEvent.model")(sequelize, DataTypes); /* Associations */ Object.keys(db).forEach((model) => { if (db[model].associate) { db[model].associate(db); } }); module.exports = db;