Files
docs/mcp/mongo-ops/modules/mongo_ops.repository.json
Vishesh 'ironeagle' Bangotra 49a00351bb docs: collect mongo-ops lib (mkdocstrings) + wiki into separate site subpaths, fix mcp server name, expose port 8007
- mongo-ops now serves /mongo-ops/wiki/ and /mongo-ops/lib/ independently
- add mongo-ops MCP bundle under mcp/mongo-ops
- fix copy-paste mcp server (jwtlib -> mongo_ops) in config.yml
- .drone.yml/Dockerfile: publish port 8007 for mongo-ops MCP
2026-09-14 22:33:34 +05:30

431 lines
22 KiB
JSON

{
"module": "mongo_ops.repository",
"content": {
"path": "mongo_ops.repository",
"docstring": "Repository patterns and CRUD mixins for MongoDB.",
"objects": {
"datetime": {
"name": "datetime",
"kind": "alias",
"path": "mongo_ops.repository.datetime",
"signature": "<bound method Alias.signature of Alias('datetime', 'datetime.datetime')>",
"docstring": null
},
"Any": {
"name": "Any",
"kind": "alias",
"path": "mongo_ops.repository.Any",
"signature": "<bound method Alias.signature of Alias('Any', 'typing.Any')>",
"docstring": null
},
"Dict": {
"name": "Dict",
"kind": "alias",
"path": "mongo_ops.repository.Dict",
"signature": "<bound method Alias.signature of Alias('Dict', 'typing.Dict')>",
"docstring": null
},
"Generic": {
"name": "Generic",
"kind": "alias",
"path": "mongo_ops.repository.Generic",
"signature": "<bound method Alias.signature of Alias('Generic', 'typing.Generic')>",
"docstring": null
},
"List": {
"name": "List",
"kind": "alias",
"path": "mongo_ops.repository.List",
"signature": "<bound method Alias.signature of Alias('List', 'typing.List')>",
"docstring": null
},
"Optional": {
"name": "Optional",
"kind": "alias",
"path": "mongo_ops.repository.Optional",
"signature": "<bound method Alias.signature of Alias('Optional', 'typing.Optional')>",
"docstring": null
},
"TypeVar": {
"name": "TypeVar",
"kind": "alias",
"path": "mongo_ops.repository.TypeVar",
"signature": "<bound method Alias.signature of Alias('TypeVar', 'typing.TypeVar')>",
"docstring": null
},
"Union": {
"name": "Union",
"kind": "alias",
"path": "mongo_ops.repository.Union",
"signature": "<bound method Alias.signature of Alias('Union', 'typing.Union')>",
"docstring": null
},
"ObjectId": {
"name": "ObjectId",
"kind": "alias",
"path": "mongo_ops.repository.ObjectId",
"signature": "<bound method Alias.signature of Alias('ObjectId', 'bson.ObjectId')>",
"docstring": null
},
"AsyncIOMotorCollection": {
"name": "AsyncIOMotorCollection",
"kind": "alias",
"path": "mongo_ops.repository.AsyncIOMotorCollection",
"signature": "<bound method Alias.signature of Alias('AsyncIOMotorCollection', 'motor.motor_asyncio.AsyncIOMotorCollection')>",
"docstring": null
},
"MongoConnectionManager": {
"name": "MongoConnectionManager",
"kind": "class",
"path": "mongo_ops.repository.MongoConnectionManager",
"signature": "<bound method Alias.signature of Alias('MongoConnectionManager', 'mongo_ops.connection.MongoConnectionManager')>",
"docstring": "Manages MongoDB connections with async lifecycle.\n\nThis class provides a singleton-like manager for the MongoDB client and \ndatabase instances, ensuring they are properly initialized and closed \nacross the application lifecycle.",
"members": {
"connect": {
"name": "connect",
"kind": "function",
"path": "mongo_ops.repository.MongoConnectionManager.connect",
"signature": "<bound method Alias.signature of Alias('connect', 'mongo_ops.connection.MongoConnectionManager.connect')>",
"docstring": "Connect to MongoDB and initialize the shared client.\n\nArgs:\n uri: MongoDB connection URI (e.g., \"mongodb://localhost:27017\").\n db_name: Name of the database to use.\n **kwargs: Additional Motor client options (e.g., maxPoolSize).\n\nReturns:\n AsyncIOMotorDatabase: The initialized database instance."
},
"disconnect": {
"name": "disconnect",
"kind": "function",
"path": "mongo_ops.repository.MongoConnectionManager.disconnect",
"signature": "<bound method Alias.signature of Alias('disconnect', 'mongo_ops.connection.MongoConnectionManager.disconnect')>",
"docstring": "Close the active MongoDB connection and cleanup resources."
},
"get_database": {
"name": "get_database",
"kind": "function",
"path": "mongo_ops.repository.MongoConnectionManager.get_database",
"signature": "<bound method Alias.signature of Alias('get_database', 'mongo_ops.connection.MongoConnectionManager.get_database')>",
"docstring": "Retrieve the current database instance.\n\nReturns:\n AsyncIOMotorDatabase: The active database instance.\n\nRaises:\n RuntimeError: If connect() has not been called yet."
},
"get_client": {
"name": "get_client",
"kind": "function",
"path": "mongo_ops.repository.MongoConnectionManager.get_client",
"signature": "<bound method Alias.signature of Alias('get_client', 'mongo_ops.connection.MongoConnectionManager.get_client')>",
"docstring": "Retrieve the current client instance.\n\nReturns:\n AsyncIOMotorClient: The active Motor client instance.\n\nRaises:\n RuntimeError: If connect() has not been called yet."
},
"lifespan": {
"name": "lifespan",
"kind": "function",
"path": "mongo_ops.repository.MongoConnectionManager.lifespan",
"signature": "<bound method Alias.signature of Alias('lifespan', 'mongo_ops.connection.MongoConnectionManager.lifespan')>",
"docstring": "Async context manager for managing connection lifecycle.\n\nDesigned for use with FastAPI or other frameworks supporting \nlifespan management.\n\nArgs:\n uri: MongoDB connection URI.\n db_name: Name of the database.\n **kwargs: Additional Motor client options.\n\nYields:\n AsyncIOMotorDatabase: The active database instance.\n\nUsage:\n @asynccontextmanager\n async def lifespan(app: FastAPI):\n async with MongoConnectionManager.lifespan(uri, db_name):\n yield"
}
}
},
"BaseDocument": {
"name": "BaseDocument",
"kind": "class",
"path": "mongo_ops.repository.BaseDocument",
"signature": "<bound method Alias.signature of Alias('BaseDocument', 'mongo_ops.models.BaseDocument')>",
"docstring": "Base document class with common MongoDB fields.\n\nInherit from this class to create Pydantic models that represent \nMongoDB documents. It includes automatic handling of the `_id` field \nand timestamps.\n\nAttributes:\n id: The MongoDB document ID (aliased to `_id`).\n created_at: Timestamp when the document was created.\n updated_at: Timestamp when the document was last updated.",
"members": {
"id": {
"name": "id",
"kind": "attribute",
"path": "mongo_ops.repository.BaseDocument.id",
"signature": "<bound method Alias.signature of Alias('id', 'mongo_ops.models.BaseDocument.id')>",
"docstring": null
},
"created_at": {
"name": "created_at",
"kind": "attribute",
"path": "mongo_ops.repository.BaseDocument.created_at",
"signature": "<bound method Alias.signature of Alias('created_at', 'mongo_ops.models.BaseDocument.created_at')>",
"docstring": null
},
"updated_at": {
"name": "updated_at",
"kind": "attribute",
"path": "mongo_ops.repository.BaseDocument.updated_at",
"signature": "<bound method Alias.signature of Alias('updated_at', 'mongo_ops.models.BaseDocument.updated_at')>",
"docstring": null
},
"Config": {
"name": "Config",
"kind": "class",
"path": "mongo_ops.repository.BaseDocument.Config",
"signature": "<bound method Alias.signature of Alias('Config', 'mongo_ops.models.BaseDocument.Config')>",
"docstring": null,
"members": {
"populate_by_name": {
"name": "populate_by_name",
"kind": "attribute",
"path": "mongo_ops.repository.BaseDocument.Config.populate_by_name",
"signature": "<bound method Alias.signature of Alias('populate_by_name', 'mongo_ops.models.BaseDocument.Config.populate_by_name')>",
"docstring": null
},
"arbitrary_types_allowed": {
"name": "arbitrary_types_allowed",
"kind": "attribute",
"path": "mongo_ops.repository.BaseDocument.Config.arbitrary_types_allowed",
"signature": "<bound method Alias.signature of Alias('arbitrary_types_allowed', 'mongo_ops.models.BaseDocument.Config.arbitrary_types_allowed')>",
"docstring": null
},
"json_encoders": {
"name": "json_encoders",
"kind": "attribute",
"path": "mongo_ops.repository.BaseDocument.Config.json_encoders",
"signature": "<bound method Alias.signature of Alias('json_encoders', 'mongo_ops.models.BaseDocument.Config.json_encoders')>",
"docstring": null
},
"json_schema_extra": {
"name": "json_schema_extra",
"kind": "attribute",
"path": "mongo_ops.repository.BaseDocument.Config.json_schema_extra",
"signature": "<bound method Alias.signature of Alias('json_schema_extra', 'mongo_ops.models.BaseDocument.Config.json_schema_extra')>",
"docstring": null
}
}
}
}
},
"PopulationEngine": {
"name": "PopulationEngine",
"kind": "class",
"path": "mongo_ops.repository.PopulationEngine",
"signature": "<bound method Alias.signature of Alias('PopulationEngine', 'mongo_ops.populate.engine.PopulationEngine')>",
"docstring": null,
"members": {
"register_repo": {
"name": "register_repo",
"kind": "function",
"path": "mongo_ops.repository.PopulationEngine.register_repo",
"signature": "<bound method Alias.signature of Alias('register_repo', 'mongo_ops.populate.engine.PopulationEngine.register_repo')>",
"docstring": null
},
"populate": {
"name": "populate",
"kind": "function",
"path": "mongo_ops.repository.PopulationEngine.populate",
"signature": "<bound method Alias.signature of Alias('populate', 'mongo_ops.populate.engine.PopulationEngine.populate')>",
"docstring": null
},
"depopulate": {
"name": "depopulate",
"kind": "function",
"path": "mongo_ops.repository.PopulationEngine.depopulate",
"signature": "<bound method Alias.signature of Alias('depopulate', 'mongo_ops.populate.engine.PopulationEngine.depopulate')>",
"docstring": null
}
}
},
"PopulateRule": {
"name": "PopulateRule",
"kind": "class",
"path": "mongo_ops.repository.PopulateRule",
"signature": "<bound method Alias.signature of Alias('PopulateRule', 'mongo_ops.populate.rules.PopulateRule')>",
"docstring": null,
"members": {
"field_name": {
"name": "field_name",
"kind": "attribute",
"path": "mongo_ops.repository.PopulateRule.field_name",
"signature": "<bound method Alias.signature of Alias('field_name', 'mongo_ops.populate.rules.PopulateRule.field_name')>",
"docstring": null
},
"collection_name": {
"name": "collection_name",
"kind": "attribute",
"path": "mongo_ops.repository.PopulateRule.collection_name",
"signature": "<bound method Alias.signature of Alias('collection_name', 'mongo_ops.populate.rules.PopulateRule.collection_name')>",
"docstring": null
},
"nested_rules": {
"name": "nested_rules",
"kind": "attribute",
"path": "mongo_ops.repository.PopulateRule.nested_rules",
"signature": "<bound method Alias.signature of Alias('nested_rules', 'mongo_ops.populate.rules.PopulateRule.nested_rules')>",
"docstring": null
},
"max_depth": {
"name": "max_depth",
"kind": "attribute",
"path": "mongo_ops.repository.PopulateRule.max_depth",
"signature": "<bound method Alias.signature of Alias('max_depth', 'mongo_ops.populate.rules.PopulateRule.max_depth')>",
"docstring": null
},
"filter": {
"name": "filter",
"kind": "attribute",
"path": "mongo_ops.repository.PopulateRule.filter",
"signature": "<bound method Alias.signature of Alias('filter', 'mongo_ops.populate.rules.PopulateRule.filter')>",
"docstring": null
},
"projection": {
"name": "projection",
"kind": "attribute",
"path": "mongo_ops.repository.PopulateRule.projection",
"signature": "<bound method Alias.signature of Alias('projection', 'mongo_ops.populate.rules.PopulateRule.projection')>",
"docstring": null
}
}
},
"T": {
"name": "T",
"kind": "attribute",
"path": "mongo_ops.repository.T",
"signature": null,
"docstring": null
},
"CRUDMixin": {
"name": "CRUDMixin",
"kind": "class",
"path": "mongo_ops.repository.CRUDMixin",
"signature": "<bound method Class.signature of Class('CRUDMixin', 16, 196)>",
"docstring": "Generic CRUD operations mixin for MongoDB collections.\n\nThis mixin provides standard Create, Read, Update, and Delete operations \nthat work with Pydantic models.\n\nAttributes:\n collection: The Motor collection instance.\n model: The Pydantic model class representing the document.",
"members": {
"collection": {
"name": "collection",
"kind": "attribute",
"path": "mongo_ops.repository.CRUDMixin.collection",
"signature": null,
"docstring": null
},
"model": {
"name": "model",
"kind": "attribute",
"path": "mongo_ops.repository.CRUDMixin.model",
"signature": null,
"docstring": null
},
"data_to_model": {
"name": "data_to_model",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.data_to_model",
"signature": "<bound method Function.signature of Function('data_to_model', 39, 40)>",
"docstring": null
},
"create": {
"name": "create",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.create",
"signature": "<bound method Function.signature of Function('create', 42, 58)>",
"docstring": "Create a new document in the collection.\n\nArgs:\n data: The Pydantic model instance to insert.\n\nReturns:\n T: The created Pydantic model instance, including the assigned ID."
},
"get_by_id": {
"name": "get_by_id",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.get_by_id",
"signature": "<bound method Function.signature of Function('get_by_id', 60, 74)>",
"docstring": "Retrieve a document by its ID.\n\nArgs:\n id: The document ID (string or ObjectId).\n\nReturns:\n Optional[T]: The Pydantic model instance if found, else None."
},
"get_many": {
"name": "get_many",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.get_many",
"signature": "<bound method Function.signature of Function('get_many', 76, 115)>",
"docstring": "Retrieve multiple documents with filtering, pagination, and sorting.\n\nArgs:\n filter: MongoDB filter dictionary (e.g., {\"is_active\": True}).\n skip: Number of documents to skip for pagination.\n limit: Maximum number of documents to return (default 100).\n sort: List of sort specifications [(field, direction), ...].\n E.g., [(\"created_at\", -1)] for descending.\n\nReturns:\n List[T]: A list of Pydantic model instances.\n\nUsage:\n ```python\n users = await repo.get_many(\n filter={\"role\": \"admin\"},\n limit=10,\n sort=[(\"username\", 1)]\n )\n ```"
},
"update": {
"name": "update",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.update",
"signature": "<bound method Function.signature of Function('update', 117, 142)>",
"docstring": "Update a document by its ID using the $set operator.\n\nArgs:\n id: The document ID (string or ObjectId).\n data: A dictionary of fields and values to update.\n\nReturns:\n Optional[T]: The updated Pydantic model instance if found, else None.\n\nUsage:\n ```python\n updated_user = await repo.update(user_id, {\"email\": \"new@example.com\"})\n ```"
},
"patch": {
"name": "patch",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.patch",
"signature": "<bound method Function.signature of Function('patch', 144, 167)>",
"docstring": "Partially update a document using $set (REST PATCH semantics).\n\nUnlike update(), patch() takes a partial dict and applies only those\nfields. PopulatingRepository overrides this to prevent patching FK fields.\n\nArgs:\n id: The document ID (string or ObjectId).\n data: A partial dictionary of fields and values to update.\n\nReturns:\n Optional[T]: The updated Pydantic model instance if found, else None."
},
"delete": {
"name": "delete",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.delete",
"signature": "<bound method Function.signature of Function('delete', 169, 183)>",
"docstring": "Delete a document by its ID.\n\nArgs:\n id: The document ID (string or ObjectId).\n\nReturns:\n bool: True if a document was deleted, False otherwise."
},
"count": {
"name": "count",
"kind": "function",
"path": "mongo_ops.repository.CRUDMixin.count",
"signature": "<bound method Function.signature of Function('count', 185, 196)>",
"docstring": "Count documents matching a filter.\n\nArgs:\n filter: MongoDB filter dictionary.\n\nReturns:\n int: The number of matching documents."
}
}
},
"BaseRepository": {
"name": "BaseRepository",
"kind": "class",
"path": "mongo_ops.repository.BaseRepository",
"signature": "<bound method Class.signature of Class('BaseRepository', 199, 221)>",
"docstring": "Base repository class combining CRUD operations and collection management.\n\nThis class simplifies repository creation by automatically obtaining the \ndatabase connection and collection instance.\n\nAttributes:\n collection_name: The name of the collection managed by this repository.",
"members": {
"collection_name": {
"name": "collection_name",
"kind": "attribute",
"path": "mongo_ops.repository.BaseRepository.collection_name",
"signature": null,
"docstring": null
}
}
},
"PopulatingRepository": {
"name": "PopulatingRepository",
"kind": "class",
"path": "mongo_ops.repository.PopulatingRepository",
"signature": "<bound method Class.signature of Class('PopulatingRepository', 224, 342)>",
"docstring": null,
"members": {
"population_engine": {
"name": "population_engine",
"kind": "attribute",
"path": "mongo_ops.repository.PopulatingRepository.population_engine",
"signature": null,
"docstring": null
},
"set_population_engine": {
"name": "set_population_engine",
"kind": "function",
"path": "mongo_ops.repository.PopulatingRepository.set_population_engine",
"signature": "<bound method Function.signature of Function('set_population_engine', 236, 237)>",
"docstring": null
},
"set_populate_rules": {
"name": "set_populate_rules",
"kind": "function",
"path": "mongo_ops.repository.PopulatingRepository.set_populate_rules",
"signature": "<bound method Function.signature of Function('set_populate_rules', 239, 240)>",
"docstring": null
},
"data_to_model": {
"name": "data_to_model",
"kind": "function",
"path": "mongo_ops.repository.PopulatingRepository.data_to_model",
"signature": "<bound method Function.signature of Function('data_to_model', 242, 244)>",
"docstring": null
},
"create": {
"name": "create",
"kind": "function",
"path": "mongo_ops.repository.PopulatingRepository.create",
"signature": "<bound method Function.signature of Function('create', 322, 328)>",
"docstring": null
},
"update": {
"name": "update",
"kind": "function",
"path": "mongo_ops.repository.PopulatingRepository.update",
"signature": "<bound method Function.signature of Function('update', 330, 332)>",
"docstring": null
},
"patch": {
"name": "patch",
"kind": "function",
"path": "mongo_ops.repository.PopulatingRepository.patch",
"signature": "<bound method Function.signature of Function('patch', 334, 342)>",
"docstring": null
}
}
}
}
}
}