diff --git a/.drone.yml b/.drone.yml
index 276cf7f..609aa3d 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -73,6 +73,7 @@ steps:
-p 8004:8004 \
-p 8005:8005 \
-p 8006:8006 \
+ -p 8007:8007 \
--restart always \
aetos/docs:latest
diff --git a/Dockerfile b/Dockerfile
index 1756437..a530a4e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -46,6 +46,6 @@ COPY media-manager /usr/share/nginx/html/media-manager
# --- MCP bundles -----------------------------------------------------------
COPY mcp /app/mcp
-EXPOSE 8000 8001 8002 8003 8004 8005 8006 9000
+EXPOSE 8000 8001 8002 8003 8004 8005 8006 8007 9000
CMD ["python", "main.py"]
\ No newline at end of file
diff --git a/_index/index.html b/_index/index.html
index 98511a2..d6dc111 100644
--- a/_index/index.html
+++ b/_index/index.html
@@ -177,7 +177,8 @@
Mongo Ops
A modular, async MongoDB operations layer for FastAPI microservices. Simplifies CRUD, transactions, and model management.
diff --git a/config.yml b/config.yml
index 99bed8e..9742a43 100644
--- a/config.yml
+++ b/config.yml
@@ -91,6 +91,8 @@ repos:
section: libraries
docs:
wiki: site
+ lib: site
+ mcp: { bundle: docs/mcp, server: mongo_ops, port: 8007 }
- name: auth-server
source: ../auth-server
diff --git a/mcp/mongo-ops/index.json b/mcp/mongo-ops/index.json
new file mode 100644
index 0000000..8abf78f
--- /dev/null
+++ b/mcp/mongo-ops/index.json
@@ -0,0 +1,6 @@
+{
+ "project": "mongo_ops",
+ "type": "docforge-model",
+ "modules_count": 15,
+ "source": "docforge"
+}
\ No newline at end of file
diff --git a/mcp/mongo-ops/modules/mongo_ops.cache.backend.json b/mcp/mongo-ops/modules/mongo_ops.cache.backend.json
new file mode 100644
index 0000000..0365e80
--- /dev/null
+++ b/mcp/mongo-ops/modules/mongo_ops.cache.backend.json
@@ -0,0 +1,190 @@
+{
+ "module": "mongo_ops.cache.backend",
+ "content": {
+ "path": "mongo_ops.cache.backend",
+ "docstring": "Cache backend abstraction.",
+ "objects": {
+ "ABC": {
+ "name": "ABC",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.ABC",
+ "signature": "",
+ "docstring": null
+ },
+ "abstractmethod": {
+ "name": "abstractmethod",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.abstractmethod",
+ "signature": "",
+ "docstring": null
+ },
+ "dataclass": {
+ "name": "dataclass",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.dataclass",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "ObjectId": {
+ "name": "ObjectId",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.ObjectId",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheStats": {
+ "name": "CacheStats",
+ "kind": "class",
+ "path": "mongo_ops.cache.backend.CacheStats",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "hits": {
+ "name": "hits",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.hits",
+ "signature": null,
+ "docstring": null
+ },
+ "misses": {
+ "name": "misses",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.misses",
+ "signature": null,
+ "docstring": null
+ },
+ "sets": {
+ "name": "sets",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.sets",
+ "signature": null,
+ "docstring": null
+ },
+ "deletes": {
+ "name": "deletes",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.deletes",
+ "signature": null,
+ "docstring": null
+ },
+ "current_size": {
+ "name": "current_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.current_size",
+ "signature": null,
+ "docstring": null
+ },
+ "max_size": {
+ "name": "max_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.max_size",
+ "signature": null,
+ "docstring": null
+ }
+ }
+ },
+ "CircularReferenceError": {
+ "name": "CircularReferenceError",
+ "kind": "class",
+ "path": "mongo_ops.cache.backend.CircularReferenceError",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "collection": {
+ "name": "collection",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CircularReferenceError.collection",
+ "signature": null,
+ "docstring": null
+ },
+ "doc_id": {
+ "name": "doc_id",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CircularReferenceError.doc_id",
+ "signature": null,
+ "docstring": null
+ },
+ "path": {
+ "name": "path",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CircularReferenceError.path",
+ "signature": null,
+ "docstring": null
+ }
+ }
+ },
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.backend.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/mcp/mongo-ops/modules/mongo_ops.cache.config.json b/mcp/mongo-ops/modules/mongo_ops.cache.config.json
new file mode 100644
index 0000000..638800f
--- /dev/null
+++ b/mcp/mongo-ops/modules/mongo_ops.cache.config.json
@@ -0,0 +1,95 @@
+{
+ "module": "mongo_ops.cache.config",
+ "content": {
+ "path": "mongo_ops.cache.config",
+ "docstring": "Cache configuration.",
+ "objects": {
+ "dataclass": {
+ "name": "dataclass",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.dataclass",
+ "signature": "",
+ "docstring": null
+ },
+ "Literal": {
+ "name": "Literal",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.Literal",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "Redis": {
+ "name": "Redis",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.Redis",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheConfig": {
+ "name": "CacheConfig",
+ "kind": "class",
+ "path": "mongo_ops.cache.config.CacheConfig",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "enabled": {
+ "name": "enabled",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.enabled",
+ "signature": null,
+ "docstring": null
+ },
+ "backend": {
+ "name": "backend",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.backend",
+ "signature": null,
+ "docstring": null
+ },
+ "redis_client": {
+ "name": "redis_client",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.redis_client",
+ "signature": null,
+ "docstring": null
+ },
+ "default_ttl": {
+ "name": "default_ttl",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.default_ttl",
+ "signature": null,
+ "docstring": null
+ },
+ "max_entries": {
+ "name": "max_entries",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.max_entries",
+ "signature": null,
+ "docstring": null
+ },
+ "key_prefix": {
+ "name": "key_prefix",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.key_prefix",
+ "signature": null,
+ "docstring": null
+ },
+ "cleanup_interval": {
+ "name": "cleanup_interval",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.cleanup_interval",
+ "signature": null,
+ "docstring": null
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/mcp/mongo-ops/modules/mongo_ops.cache.in_memory.json b/mcp/mongo-ops/modules/mongo_ops.cache.in_memory.json
new file mode 100644
index 0000000..7650a6e
--- /dev/null
+++ b/mcp/mongo-ops/modules/mongo_ops.cache.in_memory.json
@@ -0,0 +1,260 @@
+{
+ "module": "mongo_ops.cache.in_memory",
+ "content": {
+ "path": "mongo_ops.cache.in_memory",
+ "docstring": null,
+ "objects": {
+ "asyncio": {
+ "name": "asyncio",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.asyncio",
+ "signature": "",
+ "docstring": null
+ },
+ "heapq": {
+ "name": "heapq",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.heapq",
+ "signature": "",
+ "docstring": null
+ },
+ "json": {
+ "name": "json",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.json",
+ "signature": "",
+ "docstring": null
+ },
+ "OrderedDict": {
+ "name": "OrderedDict",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.OrderedDict",
+ "signature": "",
+ "docstring": null
+ },
+ "datetime": {
+ "name": "datetime",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.datetime",
+ "signature": "",
+ "docstring": null
+ },
+ "timedelta": {
+ "name": "timedelta",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.timedelta",
+ "signature": "",
+ "docstring": null
+ },
+ "timezone": {
+ "name": "timezone",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.timezone",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.in_memory.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheStats": {
+ "name": "CacheStats",
+ "kind": "class",
+ "path": "mongo_ops.cache.in_memory.CacheStats",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "hits": {
+ "name": "hits",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.hits",
+ "signature": "",
+ "docstring": null
+ },
+ "misses": {
+ "name": "misses",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.misses",
+ "signature": "",
+ "docstring": null
+ },
+ "sets": {
+ "name": "sets",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.sets",
+ "signature": "",
+ "docstring": null
+ },
+ "deletes": {
+ "name": "deletes",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.deletes",
+ "signature": "",
+ "docstring": null
+ },
+ "current_size": {
+ "name": "current_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.current_size",
+ "signature": "",
+ "docstring": null
+ },
+ "max_size": {
+ "name": "max_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.max_size",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "InMemoryCacheBackend": {
+ "name": "InMemoryCacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ },
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "encode_value": {
+ "name": "encode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.encode_value",
+ "signature": "",
+ "docstring": null
+ },
+ "decode_value": {
+ "name": "decode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.decode_value",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/mcp/mongo-ops/modules/mongo_ops.cache.json b/mcp/mongo-ops/modules/mongo_ops.cache.json
new file mode 100644
index 0000000..66908f5
--- /dev/null
+++ b/mcp/mongo-ops/modules/mongo_ops.cache.json
@@ -0,0 +1,1384 @@
+{
+ "module": "mongo_ops.cache",
+ "content": {
+ "path": "mongo_ops.cache",
+ "docstring": null,
+ "objects": {
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheStats": {
+ "name": "CacheStats",
+ "kind": "class",
+ "path": "mongo_ops.cache.CacheStats",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "hits": {
+ "name": "hits",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheStats.hits",
+ "signature": "",
+ "docstring": null
+ },
+ "misses": {
+ "name": "misses",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheStats.misses",
+ "signature": "",
+ "docstring": null
+ },
+ "sets": {
+ "name": "sets",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheStats.sets",
+ "signature": "",
+ "docstring": null
+ },
+ "deletes": {
+ "name": "deletes",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheStats.deletes",
+ "signature": "",
+ "docstring": null
+ },
+ "current_size": {
+ "name": "current_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheStats.current_size",
+ "signature": "",
+ "docstring": null
+ },
+ "max_size": {
+ "name": "max_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheStats.max_size",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CircularReferenceError": {
+ "name": "CircularReferenceError",
+ "kind": "class",
+ "path": "mongo_ops.cache.CircularReferenceError",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "collection": {
+ "name": "collection",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CircularReferenceError.collection",
+ "signature": "",
+ "docstring": null
+ },
+ "doc_id": {
+ "name": "doc_id",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CircularReferenceError.doc_id",
+ "signature": "",
+ "docstring": null
+ },
+ "path": {
+ "name": "path",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CircularReferenceError.path",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheConfig": {
+ "name": "CacheConfig",
+ "kind": "class",
+ "path": "mongo_ops.cache.CacheConfig",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "enabled": {
+ "name": "enabled",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheConfig.enabled",
+ "signature": "",
+ "docstring": null
+ },
+ "backend": {
+ "name": "backend",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheConfig.backend",
+ "signature": "",
+ "docstring": null
+ },
+ "redis_client": {
+ "name": "redis_client",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheConfig.redis_client",
+ "signature": "",
+ "docstring": null
+ },
+ "default_ttl": {
+ "name": "default_ttl",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheConfig.default_ttl",
+ "signature": "",
+ "docstring": null
+ },
+ "max_entries": {
+ "name": "max_entries",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheConfig.max_entries",
+ "signature": "",
+ "docstring": null
+ },
+ "key_prefix": {
+ "name": "key_prefix",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheConfig.key_prefix",
+ "signature": "",
+ "docstring": null
+ },
+ "cleanup_interval": {
+ "name": "cleanup_interval",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.CacheConfig.cleanup_interval",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "InMemoryCacheBackend": {
+ "name": "InMemoryCacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.InMemoryCacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ },
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.InMemoryCacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "backend": {
+ "name": "backend",
+ "kind": "module",
+ "path": "mongo_ops.cache.backend",
+ "signature": null,
+ "docstring": "Cache backend abstraction.",
+ "members": {
+ "ABC": {
+ "name": "ABC",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.ABC",
+ "signature": "",
+ "docstring": null
+ },
+ "abstractmethod": {
+ "name": "abstractmethod",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.abstractmethod",
+ "signature": "",
+ "docstring": null
+ },
+ "dataclass": {
+ "name": "dataclass",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.dataclass",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "ObjectId": {
+ "name": "ObjectId",
+ "kind": "alias",
+ "path": "mongo_ops.cache.backend.ObjectId",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheStats": {
+ "name": "CacheStats",
+ "kind": "class",
+ "path": "mongo_ops.cache.backend.CacheStats",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "hits": {
+ "name": "hits",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.hits",
+ "signature": null,
+ "docstring": null
+ },
+ "misses": {
+ "name": "misses",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.misses",
+ "signature": null,
+ "docstring": null
+ },
+ "sets": {
+ "name": "sets",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.sets",
+ "signature": null,
+ "docstring": null
+ },
+ "deletes": {
+ "name": "deletes",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.deletes",
+ "signature": null,
+ "docstring": null
+ },
+ "current_size": {
+ "name": "current_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.current_size",
+ "signature": null,
+ "docstring": null
+ },
+ "max_size": {
+ "name": "max_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CacheStats.max_size",
+ "signature": null,
+ "docstring": null
+ }
+ }
+ },
+ "CircularReferenceError": {
+ "name": "CircularReferenceError",
+ "kind": "class",
+ "path": "mongo_ops.cache.backend.CircularReferenceError",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "collection": {
+ "name": "collection",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CircularReferenceError.collection",
+ "signature": null,
+ "docstring": null
+ },
+ "doc_id": {
+ "name": "doc_id",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CircularReferenceError.doc_id",
+ "signature": null,
+ "docstring": null
+ },
+ "path": {
+ "name": "path",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.backend.CircularReferenceError.path",
+ "signature": null,
+ "docstring": null
+ }
+ }
+ },
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.backend.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.backend.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ }
+ }
+ },
+ "config": {
+ "name": "config",
+ "kind": "module",
+ "path": "mongo_ops.cache.config",
+ "signature": null,
+ "docstring": "Cache configuration.",
+ "members": {
+ "dataclass": {
+ "name": "dataclass",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.dataclass",
+ "signature": "",
+ "docstring": null
+ },
+ "Literal": {
+ "name": "Literal",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.Literal",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "Redis": {
+ "name": "Redis",
+ "kind": "alias",
+ "path": "mongo_ops.cache.config.Redis",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheConfig": {
+ "name": "CacheConfig",
+ "kind": "class",
+ "path": "mongo_ops.cache.config.CacheConfig",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "enabled": {
+ "name": "enabled",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.enabled",
+ "signature": null,
+ "docstring": null
+ },
+ "backend": {
+ "name": "backend",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.backend",
+ "signature": null,
+ "docstring": null
+ },
+ "redis_client": {
+ "name": "redis_client",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.redis_client",
+ "signature": null,
+ "docstring": null
+ },
+ "default_ttl": {
+ "name": "default_ttl",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.default_ttl",
+ "signature": null,
+ "docstring": null
+ },
+ "max_entries": {
+ "name": "max_entries",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.max_entries",
+ "signature": null,
+ "docstring": null
+ },
+ "key_prefix": {
+ "name": "key_prefix",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.key_prefix",
+ "signature": null,
+ "docstring": null
+ },
+ "cleanup_interval": {
+ "name": "cleanup_interval",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.config.CacheConfig.cleanup_interval",
+ "signature": null,
+ "docstring": null
+ }
+ }
+ }
+ }
+ },
+ "in_memory": {
+ "name": "in_memory",
+ "kind": "module",
+ "path": "mongo_ops.cache.in_memory",
+ "signature": null,
+ "docstring": null,
+ "members": {
+ "asyncio": {
+ "name": "asyncio",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.asyncio",
+ "signature": "",
+ "docstring": null
+ },
+ "heapq": {
+ "name": "heapq",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.heapq",
+ "signature": "",
+ "docstring": null
+ },
+ "json": {
+ "name": "json",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.json",
+ "signature": "",
+ "docstring": null
+ },
+ "OrderedDict": {
+ "name": "OrderedDict",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.OrderedDict",
+ "signature": "",
+ "docstring": null
+ },
+ "datetime": {
+ "name": "datetime",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.datetime",
+ "signature": "",
+ "docstring": null
+ },
+ "timedelta": {
+ "name": "timedelta",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.timedelta",
+ "signature": "",
+ "docstring": null
+ },
+ "timezone": {
+ "name": "timezone",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.timezone",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.in_memory.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.in_memory.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheStats": {
+ "name": "CacheStats",
+ "kind": "class",
+ "path": "mongo_ops.cache.in_memory.CacheStats",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "hits": {
+ "name": "hits",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.hits",
+ "signature": "",
+ "docstring": null
+ },
+ "misses": {
+ "name": "misses",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.misses",
+ "signature": "",
+ "docstring": null
+ },
+ "sets": {
+ "name": "sets",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.sets",
+ "signature": "",
+ "docstring": null
+ },
+ "deletes": {
+ "name": "deletes",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.deletes",
+ "signature": "",
+ "docstring": null
+ },
+ "current_size": {
+ "name": "current_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.current_size",
+ "signature": "",
+ "docstring": null
+ },
+ "max_size": {
+ "name": "max_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.in_memory.CacheStats.max_size",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "InMemoryCacheBackend": {
+ "name": "InMemoryCacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ },
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.InMemoryCacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "encode_value": {
+ "name": "encode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.encode_value",
+ "signature": "",
+ "docstring": null
+ },
+ "decode_value": {
+ "name": "decode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.in_memory.decode_value",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "redis_backend": {
+ "name": "redis_backend",
+ "kind": "module",
+ "path": "mongo_ops.cache.redis_backend",
+ "signature": null,
+ "docstring": null,
+ "members": {
+ "json": {
+ "name": "json",
+ "kind": "alias",
+ "path": "mongo_ops.cache.redis_backend.json",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.redis_backend.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheStats": {
+ "name": "CacheStats",
+ "kind": "class",
+ "path": "mongo_ops.cache.redis_backend.CacheStats",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "hits": {
+ "name": "hits",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.hits",
+ "signature": "",
+ "docstring": null
+ },
+ "misses": {
+ "name": "misses",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.misses",
+ "signature": "",
+ "docstring": null
+ },
+ "sets": {
+ "name": "sets",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.sets",
+ "signature": "",
+ "docstring": null
+ },
+ "deletes": {
+ "name": "deletes",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.deletes",
+ "signature": "",
+ "docstring": null
+ },
+ "current_size": {
+ "name": "current_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.current_size",
+ "signature": "",
+ "docstring": null
+ },
+ "max_size": {
+ "name": "max_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.max_size",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "Redis": {
+ "name": "Redis",
+ "kind": "alias",
+ "path": "mongo_ops.cache.redis_backend.Redis",
+ "signature": "",
+ "docstring": null
+ },
+ "RedisCacheBackend": {
+ "name": "RedisCacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ },
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "publish_invalidate": {
+ "name": "publish_invalidate",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.publish_invalidate",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "encode_value": {
+ "name": "encode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.encode_value",
+ "signature": "",
+ "docstring": null
+ },
+ "decode_value": {
+ "name": "decode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.decode_value",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "repository": {
+ "name": "repository",
+ "kind": "module",
+ "path": "mongo_ops.cache.repository",
+ "signature": null,
+ "docstring": null,
+ "members": {
+ "Generic": {
+ "name": "Generic",
+ "kind": "alias",
+ "path": "mongo_ops.cache.repository.Generic",
+ "signature": "",
+ "docstring": null
+ },
+ "List": {
+ "name": "List",
+ "kind": "alias",
+ "path": "mongo_ops.cache.repository.List",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.repository.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "TypeVar": {
+ "name": "TypeVar",
+ "kind": "alias",
+ "path": "mongo_ops.cache.repository.TypeVar",
+ "signature": "",
+ "docstring": null
+ },
+ "Union": {
+ "name": "Union",
+ "kind": "alias",
+ "path": "mongo_ops.cache.repository.Union",
+ "signature": "",
+ "docstring": null
+ },
+ "ObjectId": {
+ "name": "ObjectId",
+ "kind": "alias",
+ "path": "mongo_ops.cache.repository.ObjectId",
+ "signature": "",
+ "docstring": null
+ },
+ "BaseDocument": {
+ "name": "BaseDocument",
+ "kind": "class",
+ "path": "mongo_ops.cache.repository.BaseDocument",
+ "signature": "",
+ "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.cache.repository.BaseDocument.id",
+ "signature": "",
+ "docstring": null
+ },
+ "created_at": {
+ "name": "created_at",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.BaseDocument.created_at",
+ "signature": "",
+ "docstring": null
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.BaseDocument.updated_at",
+ "signature": "",
+ "docstring": null
+ },
+ "Config": {
+ "name": "Config",
+ "kind": "class",
+ "path": "mongo_ops.cache.repository.BaseDocument.Config",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "populate_by_name": {
+ "name": "populate_by_name",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.BaseDocument.Config.populate_by_name",
+ "signature": "",
+ "docstring": null
+ },
+ "arbitrary_types_allowed": {
+ "name": "arbitrary_types_allowed",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.BaseDocument.Config.arbitrary_types_allowed",
+ "signature": "",
+ "docstring": null
+ },
+ "json_encoders": {
+ "name": "json_encoders",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.BaseDocument.Config.json_encoders",
+ "signature": "",
+ "docstring": null
+ },
+ "json_schema_extra": {
+ "name": "json_schema_extra",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.BaseDocument.Config.json_schema_extra",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ }
+ }
+ },
+ "BaseRepository": {
+ "name": "BaseRepository",
+ "kind": "class",
+ "path": "mongo_ops.cache.repository.BaseRepository",
+ "signature": "",
+ "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.cache.repository.BaseRepository.collection_name",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.repository.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheConfig": {
+ "name": "CacheConfig",
+ "kind": "class",
+ "path": "mongo_ops.cache.repository.CacheConfig",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "enabled": {
+ "name": "enabled",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.CacheConfig.enabled",
+ "signature": "",
+ "docstring": null
+ },
+ "backend": {
+ "name": "backend",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.CacheConfig.backend",
+ "signature": "",
+ "docstring": null
+ },
+ "redis_client": {
+ "name": "redis_client",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.CacheConfig.redis_client",
+ "signature": "",
+ "docstring": null
+ },
+ "default_ttl": {
+ "name": "default_ttl",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.CacheConfig.default_ttl",
+ "signature": "",
+ "docstring": null
+ },
+ "max_entries": {
+ "name": "max_entries",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.CacheConfig.max_entries",
+ "signature": "",
+ "docstring": null
+ },
+ "key_prefix": {
+ "name": "key_prefix",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.CacheConfig.key_prefix",
+ "signature": "",
+ "docstring": null
+ },
+ "cleanup_interval": {
+ "name": "cleanup_interval",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.CacheConfig.cleanup_interval",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "decode_value": {
+ "name": "decode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.decode_value",
+ "signature": "",
+ "docstring": null
+ },
+ "encode_value": {
+ "name": "encode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.encode_value",
+ "signature": "",
+ "docstring": null
+ },
+ "T": {
+ "name": "T",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.repository.T",
+ "signature": null,
+ "docstring": null
+ },
+ "CachedBaseRepository": {
+ "name": "CachedBaseRepository",
+ "kind": "class",
+ "path": "mongo_ops.cache.repository.CachedBaseRepository",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get_by_id": {
+ "name": "get_by_id",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CachedBaseRepository.get_by_id",
+ "signature": "",
+ "docstring": null
+ },
+ "create": {
+ "name": "create",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CachedBaseRepository.create",
+ "signature": "",
+ "docstring": null
+ },
+ "update": {
+ "name": "update",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CachedBaseRepository.update",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CachedBaseRepository.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "warm_cache": {
+ "name": "warm_cache",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CachedBaseRepository.warm_cache",
+ "signature": "",
+ "docstring": null
+ },
+ "invalidate_cache": {
+ "name": "invalidate_cache",
+ "kind": "function",
+ "path": "mongo_ops.cache.repository.CachedBaseRepository.invalidate_cache",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/mcp/mongo-ops/modules/mongo_ops.cache.redis_backend.json b/mcp/mongo-ops/modules/mongo_ops.cache.redis_backend.json
new file mode 100644
index 0000000..0bcef2b
--- /dev/null
+++ b/mcp/mongo-ops/modules/mongo_ops.cache.redis_backend.json
@@ -0,0 +1,232 @@
+{
+ "module": "mongo_ops.cache.redis_backend",
+ "content": {
+ "path": "mongo_ops.cache.redis_backend",
+ "docstring": null,
+ "objects": {
+ "json": {
+ "name": "json",
+ "kind": "alias",
+ "path": "mongo_ops.cache.redis_backend.json",
+ "signature": "",
+ "docstring": null
+ },
+ "Optional": {
+ "name": "Optional",
+ "kind": "alias",
+ "path": "mongo_ops.cache.redis_backend.Optional",
+ "signature": "",
+ "docstring": null
+ },
+ "CacheBackend": {
+ "name": "CacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.CacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "CacheStats": {
+ "name": "CacheStats",
+ "kind": "class",
+ "path": "mongo_ops.cache.redis_backend.CacheStats",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "hits": {
+ "name": "hits",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.hits",
+ "signature": "",
+ "docstring": null
+ },
+ "misses": {
+ "name": "misses",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.misses",
+ "signature": "",
+ "docstring": null
+ },
+ "sets": {
+ "name": "sets",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.sets",
+ "signature": "",
+ "docstring": null
+ },
+ "deletes": {
+ "name": "deletes",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.deletes",
+ "signature": "",
+ "docstring": null
+ },
+ "current_size": {
+ "name": "current_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.current_size",
+ "signature": "",
+ "docstring": null
+ },
+ "max_size": {
+ "name": "max_size",
+ "kind": "attribute",
+ "path": "mongo_ops.cache.redis_backend.CacheStats.max_size",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "Redis": {
+ "name": "Redis",
+ "kind": "alias",
+ "path": "mongo_ops.cache.redis_backend.Redis",
+ "signature": "",
+ "docstring": null
+ },
+ "RedisCacheBackend": {
+ "name": "RedisCacheBackend",
+ "kind": "class",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend",
+ "signature": "",
+ "docstring": null,
+ "members": {
+ "initialize": {
+ "name": "initialize",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.initialize",
+ "signature": "",
+ "docstring": null
+ },
+ "shutdown": {
+ "name": "shutdown",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.shutdown",
+ "signature": "",
+ "docstring": null
+ },
+ "get": {
+ "name": "get",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.get",
+ "signature": "",
+ "docstring": null
+ },
+ "set": {
+ "name": "set",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.set",
+ "signature": "",
+ "docstring": null
+ },
+ "delete": {
+ "name": "delete",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.delete",
+ "signature": "",
+ "docstring": null
+ },
+ "exists": {
+ "name": "exists",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.exists",
+ "signature": "",
+ "docstring": null
+ },
+ "clear_pattern": {
+ "name": "clear_pattern",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.clear_pattern",
+ "signature": "",
+ "docstring": null
+ },
+ "get_stats": {
+ "name": "get_stats",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.get_stats",
+ "signature": "",
+ "docstring": null
+ },
+ "publish_invalidate": {
+ "name": "publish_invalidate",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.RedisCacheBackend.publish_invalidate",
+ "signature": "",
+ "docstring": null
+ }
+ }
+ },
+ "encode_value": {
+ "name": "encode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.encode_value",
+ "signature": "",
+ "docstring": null
+ },
+ "decode_value": {
+ "name": "decode_value",
+ "kind": "function",
+ "path": "mongo_ops.cache.redis_backend.decode_value",
+ "signature": "