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":
"""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)