# Context Repository Documentation ## Overview The `ContextRepo` class is a repository for managing the `Context` records in the MongoDB database. It provides methods to create, read, update, and delete `Context` records. This class is also responsible for converting multimedia data to base64 strings when fetching `Context` records from the database. ## Methods ### `init_db() -> None` - Initializes the `contexts` collection in the MongoDB database. - If the collection does not already exist, it is created. ### `create(context: ContextModelCreate) -> ObjectId` - Inserts a new `Context` record into the `contexts` collection. - Parameters: - `context: ContextModelCreate`: The context data to be inserted. - Returns: - `ObjectId`: The `_id` of the newly created context record. ### `find_by_id(context_id: ObjectId) -> Optional[ContextModelInDB]` - Finds a `Context` record by its `_id` in the `contexts` collection. - Parameters: - `context_id: ObjectId`: The `_id` of the context record to find. - Returns: - `Optional[ContextModelInDB]`: The found context record or `None` if not found. - Note: This method also fetches the associated multimedia data (audio and video), converts them to base64 strings, and adds them to the returned context object. ### `find_all() -> List[ContextModelInDB]` - Fetches all `Context` records from the `contexts` collection. - Returns: - `List[ContextModelInDB]`: A list of all context records. ### `find_by_user_id(user_id: str) -> List[ContextModelInDB]` - Finds all `Context` records associated with a specific user in the `contexts` collection. - Parameters: - `user_id: str`: The `user_id` associated with the context records to find. - Returns: - `List[ContextModelInDB]`: A list of context records associated with the specified user. ### `find_all_by_status(status: str) -> List[ContextModelInDB]` - Finds all `Context` records with a specific status in the `contexts` collection. - Parameters: - `status: str`: The `status` value to filter the context records by. - Returns: - `List[ContextModelInDB]`: A list of context records with the specified status. ### `find_all_by_parent_id(parent_id: ObjectId) -> List[ContextModelInDB]` - Finds all `Context` records with a specific `parent_id` in the `contexts` collection. - Parameters: - `parent_id: ObjectId`: The `parent_id` value to filter the context records by. - Returns: - `List[ContextModelInDB]`: A list of context records with the specified `parent_id`. ### `update(context_id: ObjectId, updated_data: ContextModelUpdate) -> None` - Updates an existing `Context` record in the `contexts` collection. - Parameters: - `context_id: ObjectId`: The `_id` of the context record to be updated. - `updated_data: ContextModelUpdate`: The new data to update the context record with. - Returns: - `None` ### `delete(context_id: ContextModelDelete) -> None` - Deletes a `Context` record by its `_id` from the `contexts` collection. - Parameters: - `context_id: ContextModelDelete`: The `_id` of the context record to be deleted. - Returns: - `None`