memory (sqla): docstrings/type hints improvements

This commit is contained in:
Goffi 2026-04-09 13:41:11 +02:00
commit 378c6e3fef

View file

@ -18,13 +18,13 @@
import asyncio
from asyncio.subprocess import PIPE
import copy
from collections.abc import Callable, Iterable
from datetime import datetime
import json
from pathlib import Path
import sys
import time
from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple, Union
from typing import Any, Dict, List, Optional, Tuple, Union
from alembic import config as al_config, script as al_script
from alembic.runtime import migration as al_migration
@ -332,11 +332,12 @@ class Storage:
)
@aio
async def create_profile(self, name: str, component_ep: Optional[str] = None) -> None:
async def create_profile(self, name: str, component_ep: str | None = None) -> Profile:
"""Create a new profile
@param name: name of the profile
@param component: if not None, must point to a component entry point
@param component_ep: if not None, must point to a component entry point
@return: the created profile
"""
async with self.session() as session:
profile = Profile(name=name)
@ -644,7 +645,8 @@ class Storage:
).scalar_subquery()
)
if "body" in filters:
# TODO: use REGEXP (function to be defined) instead of GLOB: https://www.sqlite.org/lang_expr.html
# TODO: use REGEXP (function to be defined) instead of GLOB:
# https://www.sqlite.org/lang_expr.html
stmt = stmt.where(Message.message.like(f"%{filters['body']}%"))
if "search" in filters:
search_term = f"%{filters['search']}%"
@ -1520,13 +1522,17 @@ class Storage:
@aio
async def delete_pubsub_items(
self, node: PubsubNode, items_names: Optional[List[str]] = None
self,
node: PubsubNode | None,
items_names: list[str] | None = None,
) -> None:
"""Delete items cached for a node
"""Delete items from a node.
Used for pubsub operations like retract or purge.
@param node: node from which items must be deleted
@param items_names: names of items to delete
if None, ALL items will be deleted
@param items_names: names of items to delete.
If None, deletes ALL items
"""
stmt = delete(PubsubItem)
if node is not None:
@ -1543,19 +1549,26 @@ class Storage:
@aio
async def purge_pubsub_items(
self,
services: Optional[List[jid.JID]] = None,
names: Optional[List[str]] = None,
types: Optional[List[str]] = None,
subtypes: Optional[List[str]] = None,
profiles: Optional[List[str]] = None,
created_before: Optional[datetime] = None,
updated_before: Optional[datetime] = None,
services: list[jid.JID] | None = None,
names: list[str] | None = None,
types: list[str] | None = None,
subtypes: list[str] | None = None,
profiles: list[str] | None = None,
created_before: datetime | None = None,
updated_before: datetime | None = None,
) -> None:
"""Delete items cached for a node
"""Bulk delete items for maintenance operations.
@param node: node from which items must be deleted
@param items_names: names of items to delete
if None, ALL items will be deleted
Deletes items across multiple nodes based on node properties or time criteria.
Used for administrative cleanup tasks.
@param services: filter by pubsub service JIDs
@param names: filter by node names
@param types: filter by node types
@param subtypes: filter by node subtypes
@param profiles: filter by profile names
@param created_before: delete items created before this datetime
@param updated_before: delete items updated before this datetime
"""
stmt = delete(PubsubItem)
node_fields = {