From d76d1afd9df013164119e9a695b0b3d246d024a5 Mon Sep 17 00:00:00 2001 From: Jack Case Date: Mon, 30 Mar 2026 11:32:42 -0400 Subject: [PATCH] create a first alembic revision to generate blocks and pages tables point alembic.ini at a local sqlite db for testing --- migrations/alembic.ini | 2 +- .../040713502ba4_initial_outline_rs_schema.py | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 migrations/alembic/versions/040713502ba4_initial_outline_rs_schema.py diff --git a/migrations/alembic.ini b/migrations/alembic.ini index 807ded2..d682a3a 100644 --- a/migrations/alembic.ini +++ b/migrations/alembic.ini @@ -86,7 +86,7 @@ path_separator = os # database URL. This is consumed by the user-maintained env.py script only. # other means of configuring database URLs may be customized within the env.py # file. -sqlalchemy.url = driver://user:pass@localhost/dbname +sqlalchemy.url = sqlite+pysqlite:///test_db.sqlite [post_write_hooks] diff --git a/migrations/alembic/versions/040713502ba4_initial_outline_rs_schema.py b/migrations/alembic/versions/040713502ba4_initial_outline_rs_schema.py new file mode 100644 index 0000000..d51f884 --- /dev/null +++ b/migrations/alembic/versions/040713502ba4_initial_outline_rs_schema.py @@ -0,0 +1,48 @@ +"""initial outline-rs schema + +Revision ID: 040713502ba4 +Revises: +Create Date: 2026-03-30 10:47:36.255978 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + + +# revision identifiers, used by Alembic. +revision: str = '040713502ba4' +down_revision: Union[str, Sequence[str], None] = None +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + + # block table holds individual bullet points in the outline + op.create_table( + "blocks", + sa.Column("id", sa.INTEGER, primary_key=True), + sa.Column("first_child_id", sa.INTEGER, sa.schema.ForeignKey("blocks.id")), + sa.Column("next_sibling_id", sa.INTEGER, sa.schema.ForeignKey("blocks.id")), + sa.Column("page_id", sa.INTEGER, sa.schema.ForeignKey("pages.id"), index=True), + sa.Column("content", sa.types.UnicodeText) + ) + + op.create_table( + "pages", + sa.Column("id", sa.INTEGER, primary_key=True), + sa.Column("root_block_id", sa.INTEGER, sa.schema.ForeignKey("blocks.id")), + sa.Column("title", sa.types.UnicodeText) + ) + pass + + +def downgrade() -> None: + """Downgrade schema.""" + op.drop_table("blocks") + op.drop_table("pages") + pass