You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
4.3 KiB
Python
108 lines
4.3 KiB
Python
"""phase8 calendar+meetings: calendar/cal_event/focus_block/meeting/meeting_action
|
|
|
|
Revision ID: p8b2c3d4e5f6
|
|
Revises: p7a1b2c3d4e5
|
|
Create Date: 2026-06-14 01:00:00.000000
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
import sqlalchemy as sa
|
|
import sqlmodel
|
|
from alembic import op
|
|
|
|
revision: str = "p8b2c3d4e5f6"
|
|
down_revision: Union[str, Sequence[str], None] = "p7a1b2c3d4e5"
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
S = sqlmodel.sql.sqltypes.AutoString
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.create_table(
|
|
"calendar",
|
|
sa.Column("id", S(), nullable=False),
|
|
sa.Column("name", S(), nullable=False),
|
|
sa.Column("tone", S(), nullable=False),
|
|
sa.Column("on", sa.Boolean(), nullable=False),
|
|
sa.Column("sort_order", sa.Integer(), nullable=False),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"cal_event",
|
|
sa.Column("id", S(), nullable=False),
|
|
sa.Column("day", sa.Integer(), nullable=False),
|
|
sa.Column("start", S(), nullable=False),
|
|
sa.Column("end", S(), nullable=False),
|
|
sa.Column("title", S(), nullable=False),
|
|
sa.Column("cal", S(), nullable=False),
|
|
sa.Column("loc", S(), nullable=False),
|
|
sa.Column("note", S(), nullable=False),
|
|
sa.Column("soon", sa.Boolean(), nullable=False),
|
|
sa.Column("people", S(), nullable=False),
|
|
sa.Column("sort_order", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(["cal"], ["calendar.id"]),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"focus_block",
|
|
sa.Column("id", S(), nullable=False),
|
|
sa.Column("day", sa.Integer(), nullable=False),
|
|
sa.Column("start", S(), nullable=False),
|
|
sa.Column("end", S(), nullable=False),
|
|
sa.Column("title", S(), nullable=False),
|
|
sa.Column("type", S(), nullable=False),
|
|
sa.Column("tag", S(), nullable=False),
|
|
sa.Column("task_id", S(), nullable=True),
|
|
sa.Column("auto", sa.Boolean(), nullable=False),
|
|
sa.Column("sort_order", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(["task_id"], ["task.id"]),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"meeting",
|
|
sa.Column("id", S(), nullable=False),
|
|
sa.Column("event_id", S(), nullable=False),
|
|
sa.Column("phase", S(), nullable=False),
|
|
sa.Column("one_on_one", sa.Boolean(), nullable=False),
|
|
sa.Column("meta", S(), nullable=False),
|
|
sa.Column("starts_in", S(), nullable=False),
|
|
sa.Column("summary_json", S(), nullable=False),
|
|
sa.Column("decisions_json", S(), nullable=False),
|
|
sa.Column("agenda_json", S(), nullable=False),
|
|
sa.Column("last_meeting_json", S(), nullable=False),
|
|
sa.Column("last_actions_json", S(), nullable=False),
|
|
sa.Column("insights_json", S(), nullable=False),
|
|
sa.Column("docs_json", S(), nullable=False),
|
|
sa.Column("person_json", S(), nullable=False),
|
|
sa.Column("promises_json", S(), nullable=False),
|
|
sa.Column("signals_json", S(), nullable=False),
|
|
sa.Column("talking_points_json", S(), nullable=False),
|
|
sa.ForeignKeyConstraint(["event_id"], ["cal_event.id"]),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"meeting_action",
|
|
sa.Column("id", S(), nullable=False),
|
|
sa.Column("meeting_id", S(), nullable=True),
|
|
sa.Column("event_id", S(), nullable=True),
|
|
sa.Column("source", S(), nullable=False),
|
|
sa.Column("idx", sa.Integer(), nullable=False),
|
|
sa.Column("text", S(), nullable=False),
|
|
sa.Column("who", S(), nullable=False),
|
|
sa.Column("when_text", S(), nullable=False),
|
|
sa.Column("added", sa.Boolean(), nullable=False),
|
|
sa.Column("materialized_task_id", S(), nullable=True),
|
|
sa.Column("sort_order", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(["meeting_id"], ["meeting.id"]),
|
|
sa.ForeignKeyConstraint(["event_id"], ["cal_event.id"]),
|
|
sa.ForeignKeyConstraint(["materialized_task_id"], ["task.id"]),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
for t in ("meeting_action", "meeting", "focus_block", "cal_event", "calendar"):
|
|
op.drop_table(t)
|