Spaces:
Build error
Build error
from db import courses_collection2 | |
from dotenv import load_dotenv | |
import os | |
from pymongo import MongoClient | |
from datetime import datetime | |
load_dotenv() | |
MONGO_URI = os.getenv("MONGO_URI") | |
client = MongoClient(MONGO_URI) | |
db = client["novascholar_db"] | |
# Define the updated course schema | |
updated_course_schema = { | |
"bsonType": "object", | |
"required": [ | |
"course_id", | |
"title", | |
"description", | |
"faculty", | |
"faculty_id", | |
"duration", | |
"created_at", | |
], | |
"properties": { | |
"course_id": { | |
"bsonType": "string", | |
"description": "Unique identifier for the course", | |
}, | |
"title": {"bsonType": "string", "description": "Title of the course"}, | |
"description": { | |
"bsonType": "string", | |
"description": "Description of the course", | |
}, | |
"faculty": {"bsonType": "string", "description": "Name of the faculty"}, | |
"duration": {"bsonType": "string", "description": "Duration of the course"}, | |
"created_at": { | |
"bsonType": "date", | |
"description": "Date when the course was created", | |
}, | |
"sessions": { | |
"bsonType": "array", | |
"description": "List of sessions associated with the course", | |
"items": { | |
"bsonType": "object", | |
"required": ["session_id", "title", "date"], | |
"properties": { | |
"session_id": { | |
"bsonType": "string", | |
"description": "Unique identifier for the session", | |
}, | |
"title": { | |
"bsonType": "string", | |
"description": "Title of the session", | |
}, | |
"date": {"bsonType": "date", "description": "Date of the session"}, | |
"status": { | |
"bsonType": "string", | |
"description": "Status of the session (e.g., completed, upcoming)", | |
}, | |
"created_at": { | |
"bsonType": "date", | |
"description": "Date when the session was created", | |
}, | |
"pre_class": { | |
"bsonType": "object", | |
"description": "Pre-class segment data", | |
"properties": { | |
"resources": { | |
"bsonType": "array", | |
"description": "List of pre-class resources", | |
"items": { | |
"bsonType": "object", | |
"required": ["type", "title", "url"], | |
"properties": { | |
"type": { | |
"bsonType": "string", | |
"description": "Type of resource (e.g., pdf, video)", | |
}, | |
"title": { | |
"bsonType": "string", | |
"description": "Title of the resource", | |
}, | |
"url": { | |
"bsonType": "string", | |
"description": "URL of the resource", | |
}, | |
"vector": { | |
"bsonType": "array", | |
"description": "Vector representation of the resource", | |
"items": {"bsonType": "double"}, | |
}, | |
}, | |
}, | |
}, | |
"completion_required": { | |
"bsonType": "bool", | |
"description": "Indicates if completion of pre-class resources is required", | |
}, | |
}, | |
}, | |
"in_class": { | |
"bsonType": "object", | |
"description": "In-class segment data", | |
"properties": { | |
"topics": { | |
"bsonType": "array", | |
"description": "List of topics covered in the session", | |
"items": {"bsonType": "string"}, | |
}, | |
"quiz": { | |
"bsonType": "object", | |
"description": "Quiz data", | |
"properties": { | |
"title": { | |
"bsonType": "string", | |
"description": "Title of the quiz", | |
}, | |
"questions": { | |
"bsonType": "int", | |
"description": "Number of questions in the quiz", | |
}, | |
"duration": { | |
"bsonType": "int", | |
"description": "Duration of the quiz in minutes", | |
}, | |
}, | |
}, | |
"polls": { | |
"bsonType": "array", | |
"description": "List of polls conducted during the session", | |
"items": { | |
"bsonType": "object", | |
"required": ["question", "options"], | |
"properties": { | |
"question": { | |
"bsonType": "string", | |
"description": "Poll question", | |
}, | |
"options": { | |
"bsonType": "array", | |
"description": "List of poll options", | |
"items": {"bsonType": "string"}, | |
}, | |
"responses": { | |
"bsonType": "object", | |
"description": "Responses to the poll", | |
"additionalProperties": {"bsonType": "int"}, | |
}, | |
}, | |
}, | |
}, | |
}, | |
}, | |
"post_class": { | |
"bsonType": "object", | |
"description": "Post-class segment data", | |
"properties": { | |
"assignments": { | |
"bsonType": "array", | |
"description": "List of assignments", | |
"items": { | |
"bsonType": "object", | |
"required": ["id", "title", "due_date", "status"], | |
"properties": { | |
"id": { | |
"bsonType": ["objectId", "int"], | |
"description": "Assignment ID", | |
}, | |
"title": { | |
"bsonType": "string", | |
"description": "Title of the assignment", | |
}, | |
"due_date": { | |
"bsonType": "date", | |
"description": "Due date of the assignment", | |
}, | |
"status": { | |
"bsonType": "string", | |
"description": "Status of the assignment (e.g., pending, completed)", | |
}, | |
"submissions": { | |
"bsonType": "array", | |
"description": "List of submissions", | |
"items": { | |
"bsonType": "object", | |
"properties": { | |
"student_id": { | |
"bsonType": "objectId", | |
"description": "ID of the student who submitted the assignment", | |
}, | |
"file_url": { | |
"bsonType": "string", | |
"description": "URL of the submitted file", | |
}, | |
"submitted_at": { | |
"bsonType": "date", | |
"description": "Date when the assignment was submitted", | |
}, | |
}, | |
}, | |
}, | |
}, | |
}, | |
} | |
}, | |
}, | |
}, | |
}, | |
}, | |
}, | |
} | |
# Update the schema using the collMod command | |
db.command({ | |
"collMod": "courses_collection2", | |
"validator": {"$jsonSchema": updated_course_schema} | |
}) | |
print("Schema updated successfully!") |