Skip to content

Data Model

  • products — product catalogue
  • product_variants — size/colour variations
  • product_images — product media
  • product_categories — category definitions
  • product_category_relations — product-category links
  • customers — customer accounts
  • addresses — customer addresses
  • orders — order headers
  • order_items — line items
  • fulfillments — shipping fulfillments
  • payments — payment records
  • carts — shopping carts
  • cart_items — cart line items
  • coupons — discount codes
  • api_keys — API authentication
  • webhooks — webhook configurations
  • audit_logs — audit trail
products 1──N product_variants
products N──N product_categories
customers 1──N addresses
customers 1──N orders
orders 1──N order_items
orders 1──N fulfillments
orders 1──N payments
carts 1──N cart_items

Custom enum types:

CREATE TYPE currency AS ENUM ('USD', 'EUR', 'GBP', 'JPY', 'AUD', 'CAD', 'CNY', 'HKD', 'SGD');
CREATE TYPE order_status AS ENUM ('pending', 'confirmed', 'processing', 'on_hold', 'completed', 'cancelled', 'refunded');
CREATE TYPE fulfillment_status AS ENUM ('pending', 'processing', 'partial', 'shipped', 'delivered', 'cancelled', 'returned');
CREATE TYPE payment_status AS ENUM ('pending', 'authorized', 'paid', 'failed', 'cancelled', 'refunded');

Migrations run automatically on startup. Schema changes are in crates/rcommerce-core/migrations/.