fastapi_mongoDB / database.py
PrabhuKiranKonda's picture
added project files and dockerfile
cb7f5fc
raw
history blame
1.83 kB
import motor.motor_asyncio
import os
from bson.objectid import ObjectId
MONGO_DETAILS = os.getenv("MONGO_DETAILS")
client = motor.motor_asyncio.AsyncIOMotorClient(MONGO_DETAILS)
database = client.fastapi_students
students_collection = database.get_collection("students")
# helpers
def student_helper(student) -> dict:
return {
"id": str(student["_id"]),
"name": student["name"],
"email": student["email"],
"password": student["password"],
"year": student["year"],
"branch": student["branch"],
"division": student["division"],
"pin": student["pin"],
"gpa": student["gpa"],
"phone": student["phone"],
"address": student["address"],
}
# Retrieve all students present in the database
async def get_all():
students = []
async for student in students_collection.find():
students.append(student_helper(student))
return students
async def add(student_data: dict) -> dict:
student = await students_collection.insert_one(student_data)
new_student = await students_collection.find_one({"_id": student.inserted_id})
return student_helper(new_student)
async def get(PIN: str) -> dict:
student = await students_collection.find_one({"pin": PIN})
if student:
return student_helper(student)
async def update(PIN: str, updated_data: dict) -> dict:
if not updated_data:
return False
student = await students_collection.find_one({"pin": PIN})
if student:
students_collection.update_one({"pin": PIN}, {"$set": updated_data})
return True
return False
async def delete(PIN: str):
student = await students_collection.find_one({"pin": PIN})
if student:
await students_collection.delete_one({"pin": PIN})
return True
return False