/ theprofessor / services / TeacherService.py
swadhingithub 2nd step · 2/2/2024
85573d0
57 lines · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from typing import Optional, List
from uuid import UUID
from schemas.teacher_shema import OutTeacher,UpdateTeacher,TeacherBase
from models.TeachersMOdel import Teacher

import pymongo

class TeacherService:
    @staticmethod
    async def create_teacher(user:TeacherBase):
        teacher_in=Teacher(
            teacher_id=user.teacher_id,
            name=user.name,
            email=user.email,
            username=user.username,
            password=user.password,
            frist_name=user.frist_name,
            last_name=user.last_name,
            
        )
        await teacher_in.save()
        return teacher_in
    
    @staticmethod
    async def get_teacher_byid(teacher_id:str)->Optional[Teacher]:
      teacher=await Teacher.find_one(Teacher.teacher_id==teacher_id)
      return teacher
  
    @staticmethod
    async def get_teacher_byusername(username:str)->Optional[Teacher]:
      teacher=await Teacher.find_one(Teacher.username==username)
      return teacher
  
    @staticmethod
    async def get_teacher_byemail(email:str)->Optional[Teacher]:
      teacher=await Teacher.find_one(Teacher.email==email)
      return teacher
  
    @staticmethod
    async def get_teacher_byname(name:str)->Optional[Teacher]:
      teacher=await Teacher.find_one(Teacher.name==name)
      return teacher
  
    @staticmethod         
    async def get_all_teachers()->List[Teacher]:
      teachers=await Teacher.find_all()
      return teachers
    
    @staticmethod
    async def update_teacher(teacher_id:str,teacher:UpdateTeacher)->Optional[Teacher]:
      teacher=await Teacher.find_one(Teacher.teacher_id==teacher_id)
      if not teacher:
        raise pymongo.errors.OperationFailure("Teacher not found")
      
      await teacher.update({"$set":teacher.dict( exclude_unset=True)})
    
      return teacher