| # Database Module Documentation | |
| The `database` module provides classes for managing database documents and data in the ShortGPT application. The module consists of three files: | |
| - `content_data_manager.py`: Defines the `ContentDataManager` class, which manages the content data for a document in the database. | |
| - `content_database.py`: Defines the `ContentDatabase` class, which provides methods for creating and accessing `ContentDataManager` instances. | |
| - `db_document.py`: Defines the `DatabaseDocument` abstract base class and the `TinyMongoDocument` class, which represents a document in a TinyMongo database. | |
| ## File: content_data_manager.py | |
| The `content_data_manager.py` file contains the `ContentDataManager` class, which is responsible for managing the content data for a document in the database. | |
| ### Class: ContentDataManager | |
| #### `__init__(self, db_doc: DatabaseDocument, content_type: str, new=False)` | |
| - Initializes a new instance of the `ContentDataManager` class. | |
| - Parameters: | |
| - `db_doc`: The `DatabaseDocument` instance representing the document in the database. | |
| - `content_type`: The type of content to be managed by the `ContentDataManager`. | |
| - `new`: (Optional) A boolean flag indicating whether the document is new or existing. Default is `False`. | |
| #### `save(self, key, value)` | |
| - Saves the specified key-value pair to the document. | |
| - Parameters: | |
| - `key`: The key of the data to be saved. | |
| - `value`: The value of the data to be saved. | |
| #### `get(self, key)` | |
| - Retrieves the value associated with the specified key from the document. | |
| - Parameters: | |
| - `key`: The key of the data to be retrieved. | |
| - Returns: | |
| - The value associated with the specified key. | |
| #### `_getId(self)` | |
| - Retrieves the ID of the document. | |
| - Returns: | |
| - The ID of the document. | |
| #### `delete(self)` | |
| - Deletes the document from the database. | |
| #### `__str__(self)` | |
| - Returns a string representation of the document. | |
| ## File: content_database.py | |
| The `content_database.py` file contains the `ContentDatabase` class, which provides methods for creating and accessing `ContentDataManager` instances. | |
| ### Class: ContentDatabase | |
| #### `instanciateContentDataManager(self, id: str, content_type: str, new=False)` | |
| - Creates a new `ContentDataManager` instance for the specified document ID and content type. | |
| - Parameters: | |
| - `id`: The ID of the document. | |
| - `content_type`: The type of content to be managed by the `ContentDataManager`. | |
| - `new`: (Optional) A boolean flag indicating whether the document is new or existing. Default is `False`. | |
| - Returns: | |
| - A new `ContentDataManager` instance. | |
| #### `getContentDataManager(self, id, content_type: str)` | |
| - Retrieves an existing `ContentDataManager` instance for the specified document ID and content type. | |
| - Parameters: | |
| - `id`: The ID of the document. | |
| - `content_type`: The type of content to be managed by the `ContentDataManager`. | |
| - Returns: | |
| - The existing `ContentDataManager` instance, or `None` if not found. | |
| #### `createContentDataManager(self, content_type: str) -> ContentDataManager` | |
| - Creates a new `ContentDataManager` instance for a new document with the specified content type. | |
| - Parameters: | |
| - `content_type`: The type of content to be managed by the `ContentDataManager`. | |
| - Returns: | |
| - A new `ContentDataManager` instance. | |
| ## File: db_document.py | |
| The `db_document.py` file contains the `DatabaseDocument` abstract base class and the `TinyMongoDocument` class, which represents a document in a TinyMongo database. | |
| ### Abstract Class: DatabaseDocument | |
| - An abstract base class that defines the interface for a database document. | |
| - Subclasses must implement the abstract methods: | |
| - `_save(self, key, data)` | |
| - `_get(self, key)` | |
| - `_getId(self)` | |
| - `__str__(self)` | |
| - `_delete(self)` | |
| ### Class: TinyMongoDocument | |
| - Represents a document in a TinyMongo database. | |
| - Inherits from the `DatabaseDocument` abstract base class. | |
| #### `__init__(self, db_name: str, collection_name: str, document_id: str, create=False)` | |
| - Initializes a new instance of the `TinyMongoDocument` class. | |
| - Parameters: | |
| - `db_name`: The name of the database. | |
| - `collection_name`: The name of the collection. | |
| - `document_id`: The ID of the document. | |
| - `create`: (Optional) A boolean flag indicating whether to create the document if it doesn't exist. Default is `False`. | |
| #### `exists(self)` | |
| - Checks if the document exists in the database. | |
| - Returns: | |
| - `True` if the document exists, `False` otherwise. | |
| #### `_save(self, data)` | |
| - Saves the specified data to the document. | |
| - Parameters: | |
| - `data`: The data to be saved. | |
| #### `_get(self, key=None)` | |
| - Retrieves the value associated with the specified key from the document. | |
| - Parameters: | |
| - `key`: (Optional) The key of the data to be retrieved. If not specified, returns the entire document. | |
| - Returns: | |
| - The value associated with the specified key, or the entire document if no key is specified. | |
| #### `_delete(self, key)` | |
| - Deletes the specified key from the document. | |
| - Parameters: | |
| - `key`: The key to be deleted. | |
| #### `_getId(self)` | |
| - Retrieves the ID of the document. | |
| - Returns: | |
| - The ID of the document. | |
| #### `__str__(self)` | |
| - Returns a string representation of the document. |