"""Initialize database with sample data."""
import asyncio
import sys
from pathlib import Path
# Add src to path
sys.path.insert(0, str(Path(__file__).parent.parent))
from src.data.models import init_db, get_db, Contract, ContractType
from datetime import date, timedelta
import structlog
logger = structlog.get_logger()
async def create_sample_contracts():
"""Create sample contracts."""
contracts = [
{
"symbol": "BTC_95000_YES",
"description": "Bitcoin to reach $95,000 by year end",
"contract_type": ContractType.CRYPTO,
"settlement_date": date.today() + timedelta(days=365),
"is_yes_contract": True,
"paired_contract_symbol": "BTC_95000_NO"
},
{
"symbol": "BTC_95000_NO",
"description": "Bitcoin to NOT reach $95,000 by year end",
"contract_type": ContractType.CRYPTO,
"settlement_date": date.today() + timedelta(days=365),
"is_yes_contract": False,
"paired_contract_symbol": "BTC_95000_YES"
},
{
"symbol": "SPX_5000_YES",
"description": "S&P 500 to reach 5000 by Q1 end",
"contract_type": ContractType.EQUITY,
"settlement_date": date.today() + timedelta(days=90),
"is_yes_contract": True,
"paired_contract_symbol": "SPX_5000_NO"
}
]
async with get_db() as session:
for contract_data in contracts:
contract = Contract(**contract_data)
session.add(contract)
await session.commit()
logger.info("sample_contracts_created", count=len(contracts))
async def main():
"""Main initialization function."""
logger.info("initializing_database")
# Create tables
await init_db()
# Create sample contracts
await create_sample_contracts()
logger.info("database_initialized")
if __name__ == "__main__":
asyncio.run(main())