+ Entity Relationship Diagram

Scroll to zoom Drag to pan Double-click to fit 100%
erDiagram Order { string id PK string transfers FK int profile FK int account_manager FK string reference_number } OrderApproved { string id PK } OrderCanceled { string id PK string reason } OrderCompleted { string id PK } OrderConfirming { string id PK } OrderCoupon { string id PK string code int max_redemptions datetime created_date datetime expiry_date } OrderCreated { string id PK } OrderEvent { string id PK int order FK } OrderEvent }o--|| Order : order OrderGiftRecord { string id PK int account FK string personalize_message string recipient_name string recipient_email } OrderGiftRecord }o--|| Account : account OrderMispayment { string id PK int amount string currency } TillInvoice { string id PK int order FK datetime received_at string invoice } TillInvoice }o--|| Order : order

Order

Table: fold_order
Field Type Constraints
id BigAutoField PK
transfers M2M → Transfer
profile FK → CardForCoinProfile nullable
account_manager FK → CardForCoinProfile nullable
reference_number CharField(12) unique nullable default=new_order_reference_number()
amount_owed FK → CurrencyAmount nullable
agreed_date DateTimeField nullable
seller_address CharField(256) nullable
payments M2M → Payment
status FK → OrderStatus nullable
payment_source SmallIntegerField choices default=UNKNOWN()Show 4 choices
0UNKNOWNUnknown
1MERCURY_WIREMercury Wire
2PREFUNDEDPrefunded
3AMY_BREXAmy Brex
auto_buy_config FK → AutoBuyConfig nullable

Relationships

.transfers N:M Transfer
.profile N:1 CardForCoinProfile
.account_manager N:1 CardForCoinProfile
.amount_owed N:1 CurrencyAmount
.payments N:M Payment
.status N:1 OrderStatus
.auto_buy_config N:1 AutoBuyConfig

Referenced By (20 tables)

BalanceChange N:1 .order
TillInvoice N:1 .order
OrderEvent N:1 .order
FoldCardTransaction 1:1 .fold_order
FoldCardTransactionFee N:1 .fold_order
FoldCardFunding N:1 .fold_order
Slot 1:1 .order
ZendeskTicket N:M .orders
...and 10 more

Sample Queries (click to expand)

Get all records
Order.objects.all()
Get by ID
Order.objects.get(id=1)
With related Transfer
Order.objects.select_related("transfers")
Filter by agreed_date (last 7 days)
Order.objects.filter(agreed_date__gte=datetime.now()-timedelta(days=7))

Schema History (click to expand)

#0609AddField: _currency_exchange_rates_shadow2025-07-18
#0609AlterField: _currency_exchange_rates2025-07-18
#0631RenameField2025-09-10
#0631RenameField2025-09-10
#0634RemoveField: _currency_exchange_rates_bak2025-09-17
#0636AlterField: price_amount2025-09-25
#0636AlterField: price_rate2025-09-25
#0636AlterField: rewards_rate2025-09-25
#0636AlterField: value_amount2025-09-25
#0644AddField: gift_record2025-10-10

OrderApproved

Table: fold_order_approved Extends: OrderEvent
Field Type Constraints
id BigAutoField PK

Sample Queries (click to expand)

Get all records
OrderApproved.objects.all()
Get by ID
OrderApproved.objects.get(id=1)

OrderCanceled

Table: fold_order_canceled Extends: OrderEvent
Field Type Constraints
id BigAutoField PK
reason CharField(10) choicesREASONS

Sample Queries (click to expand)

Get all records
OrderCanceled.objects.all()
Get by ID
OrderCanceled.objects.get(id=1)

OrderCompleted

Table: fold_order_completed Extends: OrderEvent
Field Type Constraints
id BigAutoField PK

Sample Queries (click to expand)

Get all records
OrderCompleted.objects.all()
Get by ID
OrderCompleted.objects.get(id=1)

OrderConfirming

Table: fold_order_confirming Extends: OrderEvent
Field Type Constraints
id BigAutoField PK

Sample Queries (click to expand)

Get all records
OrderConfirming.objects.all()
Get by ID
OrderConfirming.objects.get(id=1)

OrderCoupon

Table: fold_ordercoupon
Field Type Constraints
id UUIDField PK default=uuid4
code CharField(100) unique
max_redemptions PositiveIntegerField default=1
created_date DateTimeField
expiry_date DateTimeField nullable
brand_type SmallIntegerField choicesBrand BRAND_TYPE
discount_percentage DecimalField(30,8) nullable
rewards_percentage DecimalField(30,8) nullable
rewards_amount DecimalField(30,8) nullable
rewards_amount_currency TextField(6) nullable

Sample Queries (click to expand)

Get all records
OrderCoupon.objects.all()
Get by ID
OrderCoupon.objects.get(id=1)
Filter by created_date (last 7 days)
OrderCoupon.objects.filter(created_date__gte=datetime.now()-timedelta(days=7))

OrderCreated

Table: fold_order_created Extends: OrderEvent
Field Type Constraints
id BigAutoField PK

Sample Queries (click to expand)

Get all records
OrderCreated.objects.all()
Get by ID
OrderCreated.objects.get(id=1)

OrderEvent

Table: fold_order_event Extends: AccountEvent
Field Type Constraints
id BigAutoField PK
order FK → Order

Relationships

.order N:1 Order

Sample Queries (click to expand)

Get all records
OrderEvent.objects.all()
Get by ID
OrderEvent.objects.get(id=1)
With related Order
OrderEvent.objects.select_related("order")

OrderGiftRecord

Table: fold_ordergiftrecord Extends: BaseModelMixin
Field Type Constraints
id BigAutoField PK
account FK → Account
personalize_message CharField(300) nullable
recipient_name CharField(255)
recipient_email EmailField nullable
recipient_redeemed BooleanField default=False
processed DateTimeField nullable
requested_send_date DateTimeField nullable

Relationships

.account N:1 Account

Sample Queries (click to expand)

Get all records
OrderGiftRecord.objects.all()
Get by ID
OrderGiftRecord.objects.get(id=1)
With related Account
OrderGiftRecord.objects.select_related("account")
Filter by account
OrderGiftRecord.objects.filter(account_id=123)
Filter by processed (last 7 days)
OrderGiftRecord.objects.filter(processed__gte=datetime.now()-timedelta(days=7))

OrderMispayment

Table: fold_order_mispayment Extends: OrderEvent
Field Type Constraints
id BigAutoField PK
amount DecimalField(30,8)
currency CharField(6)

Sample Queries (click to expand)

Get all records
OrderMispayment.objects.all()
Get by ID
OrderMispayment.objects.get(id=1)

TillInvoice

Table: fold_tillinvoice
Field Type Constraints
id BigAutoField PK
order FK → Order
received_at DateTimeField default=now() indexed
invoice JSONField default=dict()

Relationships

.order N:1 Order

Sample Queries (click to expand)

Get all records
TillInvoice.objects.all()
Get by ID
TillInvoice.objects.get(id=1)
With related Order
TillInvoice.objects.select_related("order")
Filter by received_at (last 7 days)
TillInvoice.objects.filter(received_at__gte=datetime.now()-timedelta(days=7))