Data structure

Generated from src/server/db/schema.ts and the app/admin auth schemas. The diagram shows 26 tables, 256 columns and 23 foreign keys. Each table lists every column with its SQL type, nullability and keys. NN means NOT NULL.

70%

Drag a node heading, or focus it and use arrow keys. Select a table to inspect its foreign keys.

  • idtextNNPK
  • nametextNN—
  • slugtextNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • category_idtextNULLFK
  • nametextNN—
  • slugtextNN—
  • descriptiontextNN—
  • statustextNN—
  • imagestextNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • product_idtextNNFK
  • codetextNN—
  • option_keytextNN—
  • optionstextNN—
  • priceintegerNN—
  • on_handintegerNN—
  • reservedintegerNN—
  • activeintegerNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • cart_idtextNNFK
  • sku_idtextNNFK
  • quantityintegerNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • sku_idtextNNFK
  • order_idtextNULLFK
  • quantityintegerNN—
  • kindtextNN—
  • reasontextNN—
  • actor_idtextNN—
  • request_keytextNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • order_idtextNNFK
  • carriertextNN—
  • tracking_numbertextNN—
  • statustextNN—
  • shipped_atintegerNN—
  • delivered_atintegerNULL—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • order_idtextNNFK
  • sku_idtextNNFK
  • quantityintegerNN—
  • statustextNN—
  • expires_atintegerNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • accountIdtextNN—
  • providerIdtextNN—
  • userIdtextNNFK
  • accessTokentextNULL—
  • refreshTokentextNULL—
  • idTokentextNULL—
  • accessTokenExpiresAtintegerNULL—
  • refreshTokenExpiresAtintegerNULL—
  • scopetextNULL—
  • passwordtextNULL—
  • createdAtintegerNN—
  • updatedAtintegerNN—
  • idtextNNPK
  • event_keytextNN—
  • order_idtextNNFK
  • eventtextNN—
  • channeltextNN—
  • recipienttextNN—
  • messagetextNN—
  • statustextNN—
  • attemptsintegerNN—
  • attempt_keytextNULL—
  • message_idtextNULL—
  • last_errortextNULL—
  • attempted_atintegerNULL—
  • next_check_atintegerNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • numbertextNN—
  • customer_idtextNNFK
  • request_keytextNN—
  • statustextNN—
  • payment_statustextNN—
  • fulfillment_statustextNN—
  • subtotalintegerNN—
  • shipping_feeintegerNN—
  • totalintegerNN—
  • shipping_addresstextNN—
  • customer_emailtextNN—
  • expires_atintegerNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • order_idtextNNFK
  • provider_order_idtextNN—
  • payment_keytextNULL—
  • statustextNN—
  • amountintegerNN—
  • refunded_amountintegerNN—
  • idempotency_keytextNN—
  • pending_refund_idtextNULL—
  • modetextNN—
  • methodtextNULL—
  • receipt_urltextNULL—
  • last_errortextNULL—
  • approved_atintegerNULL—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • nametextNULL—
  • emailtextNN—
  • emailVerifiedintegerNN—
  • imagetextNULL—
  • createdAtintegerNN—
  • updatedAtintegerNN—
  • idtextNNPK
  • order_idtextNNFK
  • sku_idtextNNFK
  • product_nametextNN—
  • sku_codetextNN—
  • optionstextNN—
  • imagetextNULL—
  • unit_priceintegerNN—
  • quantityintegerNN—
  • refunded_quantityintegerNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • refund_idtextNNFK
  • order_item_idtextNNFK
  • quantityintegerNN—
  • amountintegerNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • payment_idtextNNFK
  • order_idtextNNFK
  • request_keytextNN—
  • statustextNN—
  • amountintegerNN—
  • shipping_amountintegerNN—
  • reasontextNN—
  • restockintegerNN—
  • actor_idtextNN—
  • provider_transaction_keytextNULL—
  • last_errortextNULL—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • customer_idtextNNFK
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • expiresAtintegerNN—
  • tokentextNN—
  • createdAtintegerNN—
  • updatedAtintegerNN—
  • ipAddresstextNULL—
  • userAgenttextNULL—
  • userIdtextNNFK
  • idtextNNPK
  • expiresAtintegerNN—
  • tokentextNN—
  • createdAtintegerNN—
  • updatedAtintegerNN—
  • ipAddresstextNULL—
  • userAgenttextNULL—
  • userIdtextNNFK
  • impersonatedBytextNULL—
  • idtextNNPK
  • nametextNULL—
  • emailtextNN—
  • emailVerifiedintegerNN—
  • imagetextNULL—
  • createdAtintegerNN—
  • updatedAtintegerNN—
  • roletextNULL—
  • bannedintegerNULL—
  • banReasontextNULL—
  • banExpiresintegerNULL—
  • idtextNNPK
  • accountIdtextNN—
  • providerIdtextNN—
  • userIdtextNNFK
  • accessTokentextNULL—
  • refreshTokentextNULL—
  • idTokentextNULL—
  • accessTokenExpiresAtintegerNULL—
  • refreshTokenExpiresAtintegerNULL—
  • scopetextNULL—
  • passwordtextNULL—
  • createdAtintegerNN—
  • updatedAtintegerNN—
  • idtextNNPK
  • event_keytextNN—
  • payment_keytextNN—
  • statustextNN—
  • attemptsintegerNN—
  • last_errortextNULL—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • actor_idtextNN—
  • actiontextNN—
  • entity_idtextNN—
  • detailtextNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • identifiertextNN—
  • valuetextNN—
  • expiresAtintegerNN—
  • createdAtintegerNULL—
  • updatedAtintegerNULL—
  • idtextNNPK
  • identifiertextNN—
  • valuetextNN—
  • expiresAtintegerNN—
  • createdAtintegerNULL—
  • updatedAtintegerNULL—
  • idtextNNPK
  • owner_idtextNN—
  • storage_keytextNN—
  • imagetextNULL—
  • statustextNN—
  • created_atintegerNN—
  • updated_atintegerNN—
  • deleted_atintegerNULL—
  • idtextNNPK
  • revisionintegerNN—

Select a table to inspect its columns and relationships.

All tables (26)
  • · 6
  • · 10
  • · 12
  • · 7
  • · 11
  • · 10
  • · 9
  • · 13
  • · 17
  • · 16
  • · 17
  • · 7
  • · 13
  • · 8
  • · 15
  • · 5
  • · 8
  • · 9
  • · 11
  • · 13
  • · 9
  • · 8
  • · 6
  • · 6
  • · 8
  • · 2

Schema changes

Edit the Drizzle source, generate the migration and review its SQL. Apply it only after explicit approval; it targets the connected database. Prices, SKU stock/reservations, order items, payments and shipment records already have dedicated tables. Auth tables separate customer and admin accounts.

The diagram includes declared foreign keys only; a similar column name does not imply a relationship. Data goes through repositories and the shared layers.