Skip to content

Document Instances - Labels

DocumentInstanceLabels(perfdb)

Class used for handling document labels. Can be accessed via perfdb.documents.instances.labels.

Parameters:

  • perfdb

    (PerfDB) –

    Top level object carrying all functionality and the connection handler.

Source code in echo_postgres/perfdb_root.py
def __init__(self, perfdb: e_pg.PerfDB) -> None:
    """Base class that all subclasses should inherit from.

    Parameters
    ----------
    perfdb : PerfDB
        Top level object carrying all functionality and the connection handler.

    """
    self._perfdb: e_pg.PerfDB = perfdb

delete(document_id, labels=None)

Deletes labels for a given document.

Parameters:

  • document_id

    (int) –

    Document id

  • labels

    (list[str] | None, default: None ) –

    List of labels to be deleted. If None all will be deleted. By default, None.

Source code in echo_postgres/document_instance_labels.py
@validate_call
def delete(self, document_id: int, labels: list[str] | None = None) -> None:
    """Deletes labels for a given document.

    Parameters
    ----------
    document_id : int
        Document id
    labels : list[str] | None, optional
        List of labels to be deleted. If None all will be deleted. By default, None.
    """
    query = sql.SQL("SELECT * FROM fn_delete_document_labels({document_id}, {labels})").format(
        document_id=sql.Literal(document_id),
        labels=sql.SQL("NULL")
        if labels is None
        else sql.SQL("ARRAY[{label_names}]").format(label_names=sql.SQL(",").join(map(sql.Literal, labels))),
    )
    with self._perfdb.conn.reconnect() as conn:
        conn.execute(query, skip_retry=True)

insert(document_id, labels)

Inserts labels for a given document.

Parameters:

  • document_id

    (int) –

    Document id

  • labels

    (list[str]) –

    List of labels to be inserted

Source code in echo_postgres/document_instance_labels.py
@validate_call
def insert(self, document_id: int, labels: list[str]) -> None:
    """Inserts labels for a given document.

    Parameters
    ----------
    document_id : int
        Document id
    labels : list[str]
        List of labels to be inserted
    """
    query = sql.SQL("SELECT * FROM fn_insert_document_labels({document_id}, ARRAY[{labels}])").format(
        document_id=sql.Literal(document_id),
        labels=sql.SQL(",").join(map(sql.Literal, labels)),
    )
    with self._perfdb.conn.reconnect() as conn:
        conn.execute(query, skip_retry=True)