Adds user equity eligibility management

Implements functionality to manage user equity eligibility, allowing admins to grant and revoke access.

Adds database migration, models, CRUD operations, and API endpoints for managing user equity status.
This feature enables finer-grained control over who can convert expenses to equity contributions.
Validates a user's eligibility before allowing them to submit expenses as equity.
This commit is contained in:
padreug 2025-11-07 16:51:55 +01:00
parent 3248d3dad6
commit 7f9cecefa1
4 changed files with 249 additions and 4 deletions

View file

@ -363,3 +363,31 @@ async def m009_add_onchain_bitcoin_account(db):
"description": "On-chain Bitcoin wallet"
}
)
async def m010_user_equity_status(db):
"""
Create user_equity_status table for managing equity contribution eligibility.
Only equity-eligible users can convert their expenses to equity contributions.
"""
await db.execute(
f"""
CREATE TABLE user_equity_status (
user_id TEXT PRIMARY KEY,
is_equity_eligible BOOLEAN NOT NULL DEFAULT FALSE,
equity_account_name TEXT,
notes TEXT,
granted_by TEXT NOT NULL,
granted_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now},
revoked_at TIMESTAMP
);
"""
)
await db.execute(
"""
CREATE INDEX idx_user_equity_status_eligible
ON user_equity_status (is_equity_eligible)
WHERE is_equity_eligible = TRUE;
"""
)