Skip to content

Commit

Permalink
Добавляет эндпоинт для получения информации о текущем пользователе
Browse files Browse the repository at this point in the history
  • Loading branch information
codEnjoyer committed Nov 20, 2023
1 parent 33b6ca7 commit 0e7a18b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 4 deletions.
2 changes: 1 addition & 1 deletion backend/src/users/employees/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class Employee(BaseModel):
last_name: Mapped[str] = mapped_column(String(length=255), nullable=False)
hired_at: Mapped[datetime.date] = mapped_column(Date, server_default=func.current_date())

user: Mapped["User"] = relationship(lazy='selectin')
user: Mapped["User"] = relationship(back_populates='employee', lazy='selectin')
tutor: Mapped["Tutor"] = relationship(back_populates='employees', lazy='selectin')

# tasks: Mapped[list["TaskUnit"]] = relationship(secondary="task_employees", back_populates='employees')
Expand Down
7 changes: 6 additions & 1 deletion backend/src/users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
from fastapi_users.db import SQLAlchemyBaseUserTableUUID
from sqlalchemy import func, DateTime, String
from sqlalchemy.dialects import postgresql
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.orm import Mapped, mapped_column, relationship

from database import BaseModel
from users.employees import Employee
from users.enums import UserRoles
from users.schemas import UserRead
from users.tutors import Tutor


class User(SQLAlchemyBaseUserTableUUID, BaseModel):
Expand All @@ -18,6 +20,9 @@ class User(SQLAlchemyBaseUserTableUUID, BaseModel):
postgresql.ENUM(UserRoles, name="user_roles"), nullable=False, default=UserRoles.Employee)
registered_at: Mapped[datetime.datetime] = mapped_column(DateTime, server_default=func.now())

employee: Mapped["Employee"] = relationship(lazy='selectin')
tutor: Mapped["Tutor"] = relationship(lazy='selectin')

def to_read_schema(self) -> UserRead:
return UserRead(username=self.username,
role=self.role,
Expand Down
19 changes: 18 additions & 1 deletion backend/src/users/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

from fastapi import APIRouter

from users.employees.schemas import EmployeeRead
from users.enums import UserRoles
from users.schemas import UserRead, UserUpdate
from utils.types import UserServiceType
from users.tutors.schemas import TutorRead
from utils.types import UserServiceType, EmployeeServiceType, TutorServiceType, CurrentUser

router = APIRouter(tags=["User"])

Expand All @@ -19,6 +22,20 @@ async def get_user(id: UUID,
return await user_service.get_one(id)


@router.get("/users/me")
async def get_my_profile(user_service: UserServiceType,
employee_service: EmployeeServiceType,
tutor_service: TutorServiceType,
user: CurrentUser) -> UserRead | EmployeeRead | TutorRead:
match user.role:
case UserRoles.Employee:
return await employee_service.get_one(user.employee.id)
case UserRoles.Tutor:
return await tutor_service.get_one(user.tutor.id)
case _:
return await user_service.get_one(user.id)


@router.delete("/users/{id}/")
async def delete_user(id: UUID,
user_service: UserServiceType) -> UserRead:
Expand Down
2 changes: 1 addition & 1 deletion backend/src/users/tutors/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class Tutor(BaseModel):
name: Mapped[str] = mapped_column(String(length=255), nullable=False)
last_name: Mapped[str] = mapped_column(String(length=255), nullable=False)

user: Mapped["User"] = relationship(lazy='selectin')
user: Mapped["User"] = relationship(back_populates='tutor', lazy='selectin')
employees: Mapped[list["Employee"]] = relationship(back_populates='tutor', lazy='selectin')

def to_read_schema(self) -> TutorRead:
Expand Down

0 comments on commit 0e7a18b

Please sign in to comment.