From 222f528b5eb8f6387b7d0eafb8a279206c2ca681 Mon Sep 17 00:00:00 2001 From: IluaAir Date: Sun, 22 Jun 2025 12:12:13 +0300 Subject: [PATCH] add access token --- ...25_06_22_1211-bc0bdd74718c_access_token.py | 36 +++++++++++++++++++ src/models/__init__.py | 2 ++ src/models/token.py | 11 ++++++ 3 files changed, 49 insertions(+) create mode 100644 src/migrations/versions/2025_06_22_1211-bc0bdd74718c_access_token.py create mode 100644 src/models/token.py diff --git a/src/migrations/versions/2025_06_22_1211-bc0bdd74718c_access_token.py b/src/migrations/versions/2025_06_22_1211-bc0bdd74718c_access_token.py new file mode 100644 index 0000000..c12974b --- /dev/null +++ b/src/migrations/versions/2025_06_22_1211-bc0bdd74718c_access_token.py @@ -0,0 +1,36 @@ +"""access token + +Revision ID: bc0bdd74718c +Revises: 932121e6b220 +Create Date: 2025-06-22 12:11:19.223212 + +""" +from typing import Sequence, Union + +import fastapi_users_db_sqlalchemy +from alembic import op +import sqlalchemy as sa + + +revision: str = 'bc0bdd74718c' +down_revision: Union[str, None] = '932121e6b220' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + op.create_table('accesstoken', + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('token', sa.String(length=43), nullable=False), + sa.Column('created_at', fastapi_users_db_sqlalchemy.generics.TIMESTAMPAware(timezone=True), nullable=False), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('token') + ) + op.create_index(op.f('ix_accesstoken_created_at'), 'accesstoken', ['created_at'], unique=False) + + +def downgrade() -> None: + """Downgrade schema.""" + op.drop_index(op.f('ix_accesstoken_created_at'), table_name='accesstoken') + op.drop_table('accesstoken') diff --git a/src/models/__init__.py b/src/models/__init__.py index d1a9da9..7c18587 100644 --- a/src/models/__init__.py +++ b/src/models/__init__.py @@ -1,7 +1,9 @@ +from src.models.token import AccessToken from src.models.users import UsersORM from src.models.tasks import TasksORM __all__ = [ "UsersORM", "TasksORM", + "AccessToken", ] diff --git a/src/models/token.py b/src/models/token.py new file mode 100644 index 0000000..2e6100b --- /dev/null +++ b/src/models/token.py @@ -0,0 +1,11 @@ +from fastapi_users_db_sqlalchemy.access_token import SQLAlchemyBaseAccessTokenTable +from sqlalchemy import Integer, ForeignKey +from sqlalchemy.orm import Mapped, mapped_column, declared_attr + +from src.db.database import Base + + +class AccessToken(SQLAlchemyBaseAccessTokenTable[int], Base): + @declared_attr + def user_id(cls) -> Mapped[int]: + return mapped_column(Integer, ForeignKey("users.id", ondelete="cascade"), nullable=False) \ No newline at end of file