From f8371f96546b9b58cfb3a304b9671036ae769d3d Mon Sep 17 00:00:00 2001 From: Jack Case Date: Sun, 26 Oct 2025 11:26:41 -0400 Subject: [PATCH] adding user and path association model --- .../2eee353294c6_user_path_association.py | 47 +++++++++++++++++++ slopserver/models.py | 4 ++ 2 files changed, 51 insertions(+) create mode 100644 slopserver/alembic/versions/2eee353294c6_user_path_association.py diff --git a/slopserver/alembic/versions/2eee353294c6_user_path_association.py b/slopserver/alembic/versions/2eee353294c6_user_path_association.py new file mode 100644 index 0000000..281a175 --- /dev/null +++ b/slopserver/alembic/versions/2eee353294c6_user_path_association.py @@ -0,0 +1,47 @@ +"""user_path_association + +Revision ID: 2eee353294c6 +Revises: 12eca4bad288 +Create Date: 2025-10-25 23:17:50.734413 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import sqlmodel.sql.sqltypes + + +# revision identifiers, used by Alembic. +revision: str = '2eee353294c6' +down_revision: Union[str, Sequence[str], None] = '12eca4bad288' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('report', + sa.Column('path_id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['path_id'], ['path.id'], name=op.f('fk_report_path_id_path')), + sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_report_user_id_user')), + sa.PrimaryKeyConstraint('path_id', 'user_id', name=op.f('pk_report')) + ) + op.alter_column('path', 'domain_id', + existing_type=sa.INTEGER(), + nullable=True) + op.drop_column('user', 'salt') + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('user', sa.Column('salt', sa.VARCHAR(), autoincrement=False, nullable=False)) + op.alter_column('path', 'domain_id', + existing_type=sa.INTEGER(), + nullable=False) + op.drop_table('report') + # ### end Alembic commands ### diff --git a/slopserver/models.py b/slopserver/models.py index e507bd9..63b4a91 100644 --- a/slopserver/models.py +++ b/slopserver/models.py @@ -43,6 +43,10 @@ class User(SQLModel, table=True): email_verified: bool = Field(default=False) +class Report(SQLModel, table=True): + path_id: int | None = Field(default=None, primary_key=True, foreign_key="path.id") + user_id: int | None = Field(default=None, primary_key=True, foreign_key="user.id") + ################################################ # API Models ################################################