сделал репозитории для видов приемов и добавил в таблицу приемов поле с датой приема

This commit is contained in:
Андрей Дувакин 2025-03-11 14:37:06 +05:00
parent 56fc3d0de2
commit ca9b519490
4 changed files with 84 additions and 1 deletions

View File

@ -0,0 +1,21 @@
from typing import Optional, Sequence
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.domain.models import AppointmentType
class AppointmentTypesRepository:
def __init__(self, db: AsyncSession):
self.db = db
async def get_all(self) -> Sequence[AppointmentType]:
stmt = select(AppointmentType)
result = await self.db.execute(stmt)
return result.scalars().all()
async def get_by_id(self, appointment_type_id: int) -> Optional[AppointmentType]:
stmt = select(AppointmentType).filter(AppointmentType.id == appointment_type_id)
result = await self.db.execute(stmt)
return result.scalars().first()

View File

@ -0,0 +1,30 @@
from typing import Optional, Sequence
from sqlalchemy import select, desc
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import joinedload
from app.domain.models import Appointment
class AppointmentsRepository:
def __init__(self, db: AsyncSession):
self.db = db
async def get_all(self) -> Sequence[Appointment]:
stmt = (
select(Appointment)
.options(joinedload(Appointment.type))
.options(joinedload(Appointment.patient))
.order_by(desc(Appointment.))
)
result = await self.db.execute(stmt)
return result.scalars().all()
async def get_by_doctor_id(self, doctor_id: int):
stmt = (
select(Appointment)
.options(joinedload(Appointment.type))
.options(joinedload(Appointment.patient))
.filter()
)

View File

@ -0,0 +1,30 @@
"""добавил таблице с приемами колонку с датой приема
Revision ID: b189446b0f74
Revises: 429c0003ac73
Create Date: 2025-03-11 14:32:31.061063
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = 'b189446b0f74'
down_revision: Union[str, None] = '429c0003ac73'
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('appointments', sa.Column('date', sa.Date(), server_default=sa.text('now()'), nullable=False))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('appointments', 'date')
# ### end Alembic commands ###

View File

@ -1,5 +1,6 @@
from sqlalchemy import Column, Integer, String, ForeignKey from sqlalchemy import Column, Integer, String, ForeignKey, Date
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.domain.models.base import BaseModel from app.domain.models.base import BaseModel
@ -9,6 +10,7 @@ class Appointment(BaseModel):
results = Column(String) results = Column(String)
days_until_the_next_appointment = Column(Integer) days_until_the_next_appointment = Column(Integer)
date = Column(Date, nullable=False, server_default=func.now())
patient_id = Column(Integer, ForeignKey('patients.id'), nullable=False) patient_id = Column(Integer, ForeignKey('patients.id'), nullable=False)
doctor_id = Column(Integer, ForeignKey('users.id'), nullable=False) doctor_id = Column(Integer, ForeignKey('users.id'), nullable=False)