Verified Commit dd04da50 authored by Jakob Moser's avatar Jakob Moser
Browse files

Add Alembic migrations

parent a15ed101
Loading
Loading
Loading
Loading
+54 −0
Changes for alembic/versions/d3889051d9e7_add_users_and_keys.py: 54 added lines, 0 removed lines.
Original line number Diff line number Diff line
"""Add users and keys

Revision ID: d3889051d9e7
Revises: 2a60cb3fb390
Create Date: 2024-06-04 16:07:36.652116

"""

from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = "d3889051d9e7"
down_revision: Union[str, None] = "2a60cb3fb390"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


from portal.model import Uuid, UtcDateTime


def upgrade() -> None:
    op.create_table(
        "user",
        sa.Column("name", sa.String(), nullable=False),
        sa.Column("uuid", Uuid(), nullable=False),
        sa.PrimaryKeyConstraint("uuid"),
    )
    op.create_index(op.f("ix_user_name"), "user", ["name"], unique=True)
    op.create_table(
        "key",
        sa.Column("secret_hash", sa.String(length=256), nullable=False),
        sa.Column("created_at", UtcDateTime(), nullable=False),
        sa.Column("expires_at", UtcDateTime(), nullable=False),
        sa.Column("last_used_at", UtcDateTime(), nullable=True),
        sa.Column("user_uuid", Uuid(), nullable=False),
        sa.Column("uuid", Uuid(), nullable=False),
        sa.ForeignKeyConstraint(
            ["user_uuid"],
            ["user.uuid"],
        ),
        sa.PrimaryKeyConstraint("uuid"),
    )
    op.create_index(op.f("ix_key_secret_hash"), "key", ["secret_hash"], unique=True)


def downgrade() -> None:
    op.drop_index(op.f("ix_key_secret_hash"), table_name="key")
    op.drop_table("key")
    op.drop_index(op.f("ix_user_name"), table_name="user")
    op.drop_table("user")
+1 −0
Changes for portal/model/__init__.py: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -5,3 +5,4 @@ from .Retrievable import Retrievable
from .User import User
from .Uuid import Uuid
from .Key import Key
from .UtcDateTime import UtcDateTime