Skip to main content

Migrations

Migrations are managed with Alembic from the backend/ directory.
# Apply all migrations
alembic upgrade head

# Create a new migration
alembic revision --autogenerate -m "description"

# Downgrade one step
alembic downgrade -1
The initial migration (30b88a230f5d_initial_tables) creates all tables.

Database Engine Settings

SettingValue
Driverpsycopg2
Pool size5
Max overflow10
Pool timeout30 seconds
Connection recycling1800 seconds (30 min)
Pre-pingEnabled

Master Tables

clients

ColumnTypeDescription
idinteger PKAuto-increment
namevarcharClient name
cash_balancefloatRunning cash balance
crystal_balancefloatRunning crystal (jewelry) balance

karigars

ColumnTypeDescription
idinteger PKAuto-increment
namevarcharKarigar name
cash_balancefloatRunning cash balance
crystal_balancefloatRunning crystal balance

polishers

ColumnTypeDescription
idinteger PKAuto-increment
namevarcharPolisher name
typeinteger0=Regular, 1=Meena, 2=Rodium

bank_accounts

ColumnTypeDescription
idinteger PKAuto-increment
namevarcharBank name
balancefloatCurrent balance

bullion_accounts

ColumnTypeDescription
idinteger PKAuto-increment
namevarcharBullion dealer name

Transaction Tables

Each party (client, karigar, polisher, bank, bullion) follows the same three-table pattern: {party}_ledger_rows
ColumnTypeDescription
idinteger PKRow ID
{party}_idinteger FKForeign key to party table
datedateTransaction date
serial_numberintegerDisplay order
{party}_ledger_in_section_entries
ColumnTypeDescription
idinteger PKEntry ID
row_idinteger FKForeign key to ledger row
VariousParty-specific fields (weight, fine%, etc.)
{party}_ledger_out_section_entries — Same structure as IN entries, for outgoing transactions.

Order Tables

client_orders

ColumnTypeDescription
idinteger PKAuto-increment
client_idinteger FKReferences clients
slip_numbervarcharOrder slip number
datedateOrder date
delivery_datedateExpected delivery
itemsJSONOrder items array
making_chargefloatMaking charges

takadas

ColumnTypeDescription
idinteger PKAuto-increment
client_order_idinteger FKReferences client_orders
datedateTakada date
itemsJSONItems delivered

Order Draft Tables

order_drafts

ColumnTypeDescription
idinteger PKAuto-increment
created_attimestampWhen WhatsApp message was received
phone_numbervarcharSender’s phone number
raw_messagetextOriginal WhatsApp message

order_draft_entries

ColumnTypeDescription
idinteger PKAuto-increment
draft_idinteger FKReferences order_drafts
item_namevarcharParsed item name
weightfloatParsed weight
quantityintegerParsed quantity
client_namevarcharParsed client name
slip_numbervarcharAssigned slip number
client_idinteger FKResolved client ID (nullable)