osint-dashboard/alembic/versions/009_vessels.py

42 lines
1,008 B
Python
Raw Normal View History

"""vessels — daily VesselAPI snapshots for DVR as-of
Revision ID: 009_vessels
Revises: 008_summary_kind
Create Date: 2026-08-29
"""
from alembic import op
revision = "009_vessels"
down_revision = "008_summary_kind"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.execute(
"""
CREATE TABLE IF NOT EXISTS vessels (
mmsi TEXT NOT NULL,
poll_at TIMESTAMPTZ NOT NULL,
lat DOUBLE PRECISION NOT NULL,
lon DOUBLE PRECISION NOT NULL,
heading DOUBLE PRECISION,
speed DOUBLE PRECISION,
label TEXT,
extra JSONB,
PRIMARY KEY (mmsi, poll_at)
)
"""
)
op.execute(
"CREATE INDEX IF NOT EXISTS ix_vessels_poll_at ON vessels (poll_at DESC)"
)
op.execute(
"CREATE INDEX IF NOT EXISTS ix_vessels_bbox ON vessels (lon, lat)"
)
def downgrade() -> None:
op.execute("DROP TABLE IF EXISTS vessels")