Skip to content

Commit

Permalink
Merge branch 'backend' into frontend
Browse files Browse the repository at this point in the history
  • Loading branch information
semant1cs committed Nov 19, 2023
2 parents ad74f5f + d15662e commit 1996b8c
Show file tree
Hide file tree
Showing 44 changed files with 799 additions and 231 deletions.
13 changes: 7 additions & 6 deletions backend/migrations/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,14 @@
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata

from game.map.models import Map
from game.modules.models import Module
from game.levels.models import Level, LevelTheory, LevelTask
from game.units.tasks.models import TaskUnit, EmployeesTask
from game.units.tasks.questions.models import Question, Answer
from game.map import Map
from game.modules import Module
from game.levels import Level
from game.units.tasks import TaskUnit, EmployeesTask
from game.units.theory import TheoryUnit # , TheoryVideo
from game.units.tasks.questions import Question
from game.units.tasks.questions.answers import AnswerOption
from game.units.tasks.proofs.models import Proof, ProofVideos, ProofImages
from game.units.theory.models import TheoryUnit, TheoryVideo

from users.models import User
from users.tutors.models import Tutor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""меняет в модели уровня name на title
Revision ID: da06417476fd
Revises: 29ed19cdffbf
Create Date: 2023-11-19 00:24:59.794292
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'da06417476fd'
down_revision: Union[str, None] = '29ed19cdffbf'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('levels', sa.Column('title', sa.String(length=255), nullable=False))
op.alter_column('levels', 'module_id',
existing_type=sa.UUID(),
nullable=True)
op.drop_column('levels', 'name')
op.alter_column('modules', 'map_id',
existing_type=sa.UUID(),
nullable=True)
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('modules', 'map_id',
existing_type=sa.UUID(),
nullable=False)
op.add_column('levels', sa.Column('name', sa.VARCHAR(length=255), autoincrement=False, nullable=False))
op.alter_column('levels', 'module_id',
existing_type=sa.UUID(),
nullable=False)
op.drop_column('levels', 'title')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""меняет в модели теории theme на title
Revision ID: 5bbffa09568b
Revises: da06417476fd
Create Date: 2023-11-19 00:49:49.197801
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '5bbffa09568b'
down_revision: Union[str, None] = 'da06417476fd'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('theory_blocks', sa.Column('title', sa.String(), nullable=False))
op.drop_column('theory_blocks', 'theme')
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('theory_blocks', sa.Column('theme', sa.VARCHAR(), autoincrement=False, nullable=False))
op.drop_column('theory_blocks', 'title')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""добавляет связь между задачей и ответами
Revision ID: 43a526a12009
Revises: 5bbffa09568b
Create Date: 2023-11-19 10:35:20.123826
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '43a526a12009'
down_revision: Union[str, None] = '5bbffa09568b'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('questions', sa.Column('task_id', sa.UUID(), nullable=True))
op.create_foreign_key(None, 'questions', 'tasks', ['task_id'], ['id'])
op.add_column('tasks', sa.Column('level_id', sa.UUID(), nullable=True))
op.create_foreign_key(None, 'tasks', 'levels', ['level_id'], ['id'])
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(None, 'tasks', type_='foreignkey')
op.drop_column('tasks', 'level_id')
op.drop_constraint(None, 'questions', type_='foreignkey')
op.drop_column('questions', 'task_id')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
"""добавляет связь между вопросами и ответами
Revision ID: e21d5fb84a66
Revises: 43a526a12009
Create Date: 2023-11-19 10:37:12.398132
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'e21d5fb84a66'
down_revision: Union[str, None] = '43a526a12009'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_foreign_key(None, 'answers', 'questions', ['question_id'], ['id'])
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(None, 'answers', type_='foreignkey')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""временно удаляет таблицу с видео теории
Revision ID: e8496d8a36fc
Revises: e21d5fb84a66
Create Date: 2023-11-19 10:48:35.457329
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'e8496d8a36fc'
down_revision: Union[str, None] = 'e21d5fb84a66'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('theory_videos')
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('theory_videos',
sa.Column('id', sa.UUID(), autoincrement=False, nullable=False),
sa.Column('theory_id', sa.UUID(), autoincrement=False, nullable=False),
sa.Column('url', sa.TEXT(), autoincrement=False, nullable=False),
sa.ForeignKeyConstraint(['theory_id'], ['theory_blocks.id'], name='theory_videos_theory_id_fkey'),
sa.PrimaryKeyConstraint('id', name='theory_videos_pkey')
)
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""модуль и уровни обязательно привязаны к родителю
Revision ID: 4e3cf7a2acb2
Revises: e8496d8a36fc
Create Date: 2023-11-19 21:46:34.041826
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '4e3cf7a2acb2'
down_revision: Union[str, None] = 'e8496d8a36fc'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('levels', 'module_id',
existing_type=sa.UUID(),
nullable=False)
op.alter_column('modules', 'map_id',
existing_type=sa.UUID(),
nullable=False)
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('modules', 'map_id',
existing_type=sa.UUID(),
nullable=True)
op.alter_column('levels', 'module_id',
existing_type=sa.UUID(),
nullable=True)
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""обновляет модели задачи, вопросов и ответов
Revision ID: e545a099be25
Revises: 4e3cf7a2acb2
Create Date: 2023-11-19 22:20:11.830596
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'e545a099be25'
down_revision: Union[str, None] = '4e3cf7a2acb2'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('answers', sa.Column('is_correct', sa.Boolean(), nullable=False))
op.alter_column('tasks', 'level_id',
existing_type=sa.UUID(),
nullable=False)
op.add_column('theory_blocks', sa.Column('level_id', sa.UUID(), nullable=False))
op.create_foreign_key(None, 'theory_blocks', 'levels', ['level_id'], ['id'])
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(None, 'theory_blocks', type_='foreignkey')
op.drop_column('theory_blocks', 'level_id')
op.alter_column('tasks', 'level_id',
existing_type=sa.UUID(),
nullable=True)
op.drop_column('answers', 'is_correct')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""меняет название колонки у ответа
Revision ID: 842b8bf56cef
Revises: e545a099be25
Create Date: 2023-11-19 22:30:13.120331
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '842b8bf56cef'
down_revision: Union[str, None] = 'e545a099be25'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('answers', sa.Column('answer', sa.String(), nullable=False))
op.drop_column('answers', 'content')
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('answers', sa.Column('content', sa.VARCHAR(), autoincrement=False, nullable=False))
op.drop_column('answers', 'answer')
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""удаляет промежуточные таблицы
Revision ID: f074fb69a98a
Revises: 842b8bf56cef
Create Date: 2023-11-20 01:14:38.556334
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'f074fb69a98a'
down_revision: Union[str, None] = '842b8bf56cef'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('level_tasks')
op.drop_table('level_theory_blocks')
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('level_theory_blocks',
sa.Column('level_id', sa.UUID(), autoincrement=False, nullable=False),
sa.Column('theory_id', sa.UUID(), autoincrement=False, nullable=False),
sa.ForeignKeyConstraint(['level_id'], ['levels.id'], name='level_theory_blocks_level_id_fkey'),
sa.ForeignKeyConstraint(['theory_id'], ['theory_blocks.id'], name='level_theory_blocks_theory_id_fkey'),
sa.PrimaryKeyConstraint('level_id', 'theory_id', name='level_theory_blocks_pkey')
)
op.create_table('level_tasks',
sa.Column('level_id', sa.UUID(), autoincrement=False, nullable=False),
sa.Column('task_id', sa.UUID(), autoincrement=False, nullable=False),
sa.ForeignKeyConstraint(['level_id'], ['levels.id'], name='level_tasks_level_id_fkey'),
sa.ForeignKeyConstraint(['task_id'], ['tasks.id'], name='level_tasks_task_id_fkey'),
sa.PrimaryKeyConstraint('level_id', 'task_id', name='level_tasks_pkey')
)
# ### end Alembic commands ###
19 changes: 18 additions & 1 deletion backend/src/game/dependencies.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
from repository.level_repository import LevelRepository
from repository.map_repository import MapRepository
from repository.models_repository import ModuleRepository
from repository.module_repository import ModuleRepository
from repository.task_unit_repository import TaskUnitRepository
from repository.theory_unit_repository import TheoryUnitRepository
from services.level_service import LevelService
from services.map_service import MapService
from services.module_service import ModuleService
from services.task_unit_service import TaskUnitService
from services.theory_unit_service import TheoryUnitService


def map_service() -> MapService:
Expand All @@ -11,5 +17,16 @@ def map_service() -> MapService:
def module_service() -> ModuleService:
return ModuleService(ModuleRepository)


def level_service() -> LevelService:
return LevelService(LevelRepository)


def task_unit_service() -> TaskUnitService:
return TaskUnitService(TaskUnitRepository)


def theory_unit_service() -> TheoryUnitService:
return TheoryUnitService(TheoryUnitRepository)
# def users_service():
# return UsersService(UsersRepository)
Loading

0 comments on commit 1996b8c

Please sign in to comment.