gcloud-lab/apps/base/customer1/trade-dashboard/app/models.py
sirius0xdev 23c7c707d8 fix(trade-dashboard): fix import errors and alembic migration
- database.py: remove dead pre-definition of DATABASE_URL with
  undefined db_user/db_pass variables
- models.py: add missing Table import from sqlalchemy
- alembic/env.py: replace deprecated run_async() with asyncio.run()
  (removed in SQLAlchemy 2.0)
- alembic 001_initial: use raw SQL for CREATE TYPE instead of
  op.create_enum() which requires alembic_postgresql_enum

Migration 001_initial successfully applied to trading_data DB.
2026-05-02 22:44:38 +00:00

21 lines
948 B
Python

from sqlalchemy import Column, String, Numeric, Enum, DateTime, JSON, func, Table
from sqlalchemy.dialects.postgresql import UUID
import uuid
from database import metadata
positions = Table(
"positions",
metadata,
Column("id", UUID(as_uuid=True), primary_key=True, default=uuid.uuid4),
Column("symbol", String(32), nullable=False, index=True),
Column("direction", Enum("long", "short", name="position_direction"), nullable=False),
Column("entry_price", Numeric(precision=16, scale=8), nullable=False),
Column("exit_price", Numeric(precision=16, scale=8)),
Column("quantity", Numeric(precision=16, scale=8), nullable=False),
Column("exchange", String(32), nullable=False, index=True),
Column("opened_at", DateTime(timezone=True), server_default=func.now(), nullable=False),
Column("closed_at", DateTime(timezone=True)),
Column("pnl", Numeric(precision=16, scale=2)),
Column("metadata", JSON),
)