add SRS migrations and integrate models into application setup
This commit is contained in:
parent
abe16c20ef
commit
54155a99c5
@ -5,9 +5,11 @@ def get_app_models_modules() -> list[types.ModuleType]:
|
||||
from greek_lang.glossaries import models as glossaries_models
|
||||
from greek_lang.openai_manager import models as openai_manager_models
|
||||
from greek_lang.users import models as users_models
|
||||
from greek_lang.srs import models as srs_models
|
||||
|
||||
return [
|
||||
glossaries_models,
|
||||
openai_manager_models,
|
||||
users_models,
|
||||
srs_models,
|
||||
]
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
"""empty message
|
||||
|
||||
Revision ID: 9a2898513cf2
|
||||
Revises: 747797032526
|
||||
Create Date: 2025-08-16 19:40:06.376743
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '9a2898513cf2'
|
||||
down_revision: Union[str, None] = '747797032526'
|
||||
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('srs_progress',
|
||||
sa.Column('id', sa.BigInteger(), nullable=False),
|
||||
sa.Column('user_id', sa.BigInteger(), nullable=False),
|
||||
sa.Column('word_id', sa.BigInteger(), nullable=False),
|
||||
sa.Column('due_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('interval_days', sa.Integer(), nullable=False),
|
||||
sa.Column('ease', sa.Float(), nullable=False),
|
||||
sa.Column('reps', sa.Integer(), nullable=False),
|
||||
sa.Column('lrn_step', sa.Integer(), nullable=False),
|
||||
sa.Column('state', sa.Enum('learning', 'review', 'lapsed', name='reviewstate', native_enum=False), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_srs_progress_user_id_users')),
|
||||
sa.ForeignKeyConstraint(['word_id'], ['glossary_word.id'], name=op.f('fk_srs_progress_word_id_glossary_word')),
|
||||
sa.PrimaryKeyConstraint('id', name=op.f('pk_srs_progress')),
|
||||
sa.UniqueConstraint('user_id', 'word_id', name='uq_srs_user_word')
|
||||
)
|
||||
op.create_index(op.f('ix_srs_progress_due_at'), 'srs_progress', ['due_at'], unique=False)
|
||||
op.create_index(op.f('ix_srs_progress_user_id'), 'srs_progress', ['user_id'], unique=False)
|
||||
op.create_index(op.f('ix_srs_progress_word_id'), 'srs_progress', ['word_id'], unique=False)
|
||||
op.create_table('srs_review_log',
|
||||
sa.Column('id', sa.BigInteger(), nullable=False),
|
||||
sa.Column('user_id', sa.BigInteger(), nullable=False),
|
||||
sa.Column('word_id', sa.BigInteger(), nullable=False),
|
||||
sa.Column('ts', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('grade', sa.Integer(), nullable=False),
|
||||
sa.Column('prev_interval', sa.Integer(), nullable=False),
|
||||
sa.Column('new_interval', sa.Integer(), nullable=False),
|
||||
sa.Column('prev_ease', sa.Float(), nullable=False),
|
||||
sa.Column('new_ease', sa.Float(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_srs_review_log_user_id_users')),
|
||||
sa.ForeignKeyConstraint(['word_id'], ['glossary_word.id'], name=op.f('fk_srs_review_log_word_id_glossary_word')),
|
||||
sa.PrimaryKeyConstraint('id', name=op.f('pk_srs_review_log'))
|
||||
)
|
||||
op.create_index(op.f('ix_srs_review_log_user_id'), 'srs_review_log', ['user_id'], unique=False)
|
||||
op.create_index(op.f('ix_srs_review_log_word_id'), 'srs_review_log', ['word_id'], unique=False)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_index(op.f('ix_srs_review_log_word_id'), table_name='srs_review_log')
|
||||
op.drop_index(op.f('ix_srs_review_log_user_id'), table_name='srs_review_log')
|
||||
op.drop_table('srs_review_log')
|
||||
op.drop_index(op.f('ix_srs_progress_word_id'), table_name='srs_progress')
|
||||
op.drop_index(op.f('ix_srs_progress_user_id'), table_name='srs_progress')
|
||||
op.drop_index(op.f('ix_srs_progress_due_at'), table_name='srs_progress')
|
||||
op.drop_table('srs_progress')
|
||||
# ### end Alembic commands ###
|
||||
Loading…
Reference in New Issue
Block a user