Initial commit

This commit is contained in:
2026-01-02 21:54:53 +03:00
parent 4e93aabe11
commit 9e822789d2
5 changed files with 37 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
"""test fix
Revision ID: bec177451434
Revises: a879badde4a5
Create Date: 2026-01-02 21:54:33.772279
"""
from collections.abc import Sequence
from alembic import op
import sqlalchemy as sa
revision: str = 'bec177451434'
down_revision: str | None = 'a879badde4a5'
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('tests', sa.Column('attempts', sa.Integer(), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('tests', 'attempts')
# ### end Alembic commands ###
+1
View File
@@ -31,6 +31,7 @@ class Test:
for_group: int | None = None for_group: int | None = None
password: str | None = None password: str | None = None
expires_at: datetime | None = None expires_at: datetime | None = None
attempts: int | None = None
is_active: bool = True is_active: bool = True
created_at: datetime | None = None created_at: datetime | None = None
updated_at: datetime | None = None updated_at: datetime | None = None
@@ -33,6 +33,7 @@ class TestDAO:
for_group: int | None = None, for_group: int | None = None,
password: str | None = None, password: str | None = None,
expires_at: datetime | None = None, expires_at: datetime | None = None,
attempts: int | None = None,
is_active: bool = True, is_active: bool = True,
) -> DomainTest: ) -> DomainTest:
test = Test( test = Test(
@@ -41,6 +42,7 @@ class TestDAO:
for_group=for_group, for_group=for_group,
password=password, password=password,
expires_at=expires_at, expires_at=expires_at,
attempts=attempts,
is_active=is_active, is_active=is_active,
) )
self.session.add(test) self.session.add(test)
@@ -56,6 +58,7 @@ class TestDAO:
for_group: int | None = None, for_group: int | None = None,
password: str | None = None, password: str | None = None,
expires_at: datetime | None = None, expires_at: datetime | None = None,
attempts: int | None = None,
is_active: bool | None = None, is_active: bool | None = None,
) -> DomainTest | None: ) -> DomainTest | None:
result = await self.session.execute( result = await self.session.execute(
@@ -75,6 +78,8 @@ class TestDAO:
test.password = password test.password = password
if expires_at is not None: if expires_at is not None:
test.expires_at = expires_at test.expires_at = expires_at
if attempts is not None:
test.attempts = attempts
if is_active is not None: if is_active is not None:
test.is_active = is_active test.is_active = is_active
@@ -14,6 +14,7 @@ class TestDTO:
for_group=self.model.for_group, for_group=self.model.for_group,
password=self.model.password, password=self.model.password,
expires_at=self.model.expires_at, expires_at=self.model.expires_at,
attempts=self.model.attempts,
is_active=self.model.is_active, is_active=self.model.is_active,
created_at=self.model.created_at, created_at=self.model.created_at,
updated_at=self.model.updated_at, updated_at=self.model.updated_at,
@@ -59,6 +59,7 @@ class Test(Base):
for_group: Mapped[int | None] = mapped_column(default=None) for_group: Mapped[int | None] = mapped_column(default=None)
password: Mapped[str | None] = mapped_column(String(255), default=None) password: Mapped[str | None] = mapped_column(String(255), default=None)
expires_at: Mapped[datetime | None] = mapped_column(default=None) expires_at: Mapped[datetime | None] = mapped_column(default=None)
attempts: Mapped[int | None] = mapped_column(Integer, default=None)
is_active: Mapped[bool] = mapped_column(default=True) is_active: Mapped[bool] = mapped_column(default=True)
created_at: Mapped[datetime] = mapped_column(server_default=func.now()) created_at: Mapped[datetime] = mapped_column(server_default=func.now())
updated_at: Mapped[datetime] = mapped_column(server_default=func.now(), onupdate=func.now()) updated_at: Mapped[datetime] = mapped_column(server_default=func.now(), onupdate=func.now())