diff --git a/crud.py b/crud.py index de77106..6837d5c 100644 --- a/crud.py +++ b/crud.py @@ -979,7 +979,36 @@ async def create_or_update_user_equity_status( ) -> "UserEquityStatus": """Create or update user equity eligibility status""" from datetime import datetime - from .models import UserEquityStatus + from .models import UserEquityStatus, AccountType + import uuid + + # Auto-create user-specific equity account if granting eligibility + if data.is_equity_eligible: + # Generate equity account name: Equity:User-{user_id} + equity_account_name = f"Equity:User-{data.user_id[:8]}" + + # Check if the equity account already exists + equity_account = await get_account_by_name(equity_account_name) + + if not equity_account: + # Create the user-specific equity account + await db.execute( + """ + INSERT INTO accounts (id, name, account_type, description, user_id, created_at) + VALUES (:id, :name, :type, :description, :user_id, :created_at) + """, + { + "id": str(uuid.uuid4()), + "name": equity_account_name, + "type": AccountType.EQUITY.value, + "description": f"Equity contributions for user {data.user_id[:8]}", + "user_id": data.user_id, + "created_at": datetime.now(), + }, + ) + + # Auto-populate equity_account_name in the data + data.equity_account_name = equity_account_name # Check if user already has equity status existing = await get_user_equity_status(data.user_id)