teachers / routers /teacher.py
JairoDanielMT's picture
Upload 9 files
f5c0d34 verified
raw
history blame
3.16 kB
import sqlite3
from fastapi import APIRouter
from pydantic import BaseModel
from models import Teacher
router = APIRouter(
prefix="/teacher",
tags=["Teacher"],
responses={404: {"description": "No encontrado"}},
)
"""
CREATE TABLE IF NOT EXISTS teacher (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
department TEXT NOT NULL
)
"""
@router.get("/")
def get_teachers():
"""
Get all teachers
"""
try:
conn = sqlite3.connect("site.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM teacher")
teachers = cursor.fetchall()
conn.close()
teachers = [Teacher(id=t[0], name=t[1], department=t[2]) for t in teachers]
return teachers
except Exception as e:
return []
@router.get("/{teacher_id}")
def get_teacher(teacher_id: int):
"""
Get a teacher by id
"""
try:
conn = sqlite3.connect("site.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM teacher WHERE id=?", (teacher_id,))
teacher = cursor.fetchone()
conn.close()
teacher = Teacher(id=teacher[0], name=teacher[1], department=teacher[2])
return teacher
except Exception as e:
return []
class TeacherPost(BaseModel):
name: str
department: str
@router.post("/")
def create_teacher(t: TeacherPost):
"""
Create a teacher
"""
try:
conn = sqlite3.connect("site.db")
cursor = conn.cursor()
cursor.execute(
"INSERT INTO teacher (name, department) VALUES (?, ?)",
(t.name, t.department),
)
conn.commit()
conn.close()
return {"status": "success", "message": "Teacher created"}
except Exception as e:
return {"status": "error", "message": str(e)}
# search by teacher name
@router.get("/search/{teacher_name}")
def search_teacher(teacher_name: str):
"""
Search a teacher by name
"""
try:
conn = sqlite3.connect("site.db")
cursor = conn.cursor()
cursor.execute(
"SELECT * FROM teacher WHERE name LIKE ?", (f"%{teacher_name}%",)
)
teacher = cursor.fetchall()
conn.close()
teacher = [Teacher(id=t[0], name=t[1], department=t[2]) for t in teacher]
return teacher
except Exception as e:
return []
# insertar una lista de profesores en la base de datos
@router.post("/bulk")
def bulk_teacher(teachers: list[TeacherPost]):
"""
Bulk insert teachers
"""
try:
conn = sqlite3.connect("site.db")
cursor = conn.cursor()
for t in teachers:
cursor.execute(
"INSERT INTO teacher (name, department) VALUES (?, ?)",
(t.name, t.department),
)
conn.commit()
conn.close()
return {"status": "success", "message": "Teachers created"}
except Exception as e:
return {"status": "error", "message": str(e)}