Spaces:
Sleeping
Sleeping
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 | |
) | |
""" | |
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 [] | |
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 | |
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 | |
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 | |
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)} | |