Auto-creates equity account for eligible users

Automatically creates a user-specific equity account when a user is granted equity eligibility.
This simplifies the process of granting equity and ensures that each eligible user has a dedicated equity account.
This commit is contained in:
padreug 2025-11-07 22:24:32 +01:00
parent 88aaf0e28e
commit 988d7fdf20

31
crud.py
View file

@ -979,7 +979,36 @@ async def create_or_update_user_equity_status(
) -> "UserEquityStatus": ) -> "UserEquityStatus":
"""Create or update user equity eligibility status""" """Create or update user equity eligibility status"""
from datetime import datetime 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 # Check if user already has equity status
existing = await get_user_equity_status(data.user_id) existing = await get_user_equity_status(data.user_id)