YashJD's picture
Initial Commit
e107ee4
raw
history blame
10.7 kB
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!")