luplo.core.captures

CRUD operations for raw text captures.

Captures are not curated items. They are private raw intake rows used as source material for later review and explicit promotion.

Attributes

Functions

add_capture(→ luplo.core.models.Capture)

list_captures(→ list[luplo.core.models.Capture])

get_capture(→ luplo.core.models.Capture | None)

search_captures(→ list[luplo.core.models.Capture])

set_capture_state(→ luplo.core.models.Capture)

discard_capture(→ luplo.core.models.Capture)

redact_capture(→ luplo.core.models.Capture)

annotate_capture(→ luplo.core.models.Capture)

promote_capture_to_item(...)

Module Contents

luplo.core.captures.CAPTURE_STATES = ('captured', 'backlog', 'review', 'promoted', 'discarded', 'redacted')
luplo.core.captures.SENSITIVITY_HINTS = ('none', 'possible', 'sensitive')
luplo.core.captures.DEFAULT_CAPTURE_STATE = 'captured'
luplo.core.captures.DEFAULT_SENSITIVITY_HINT = 'none'
luplo.core.captures.CAPTURE_LIMIT_MAX = 1000
luplo.core.captures.REDACTED_TEXT = '[redacted]'
async luplo.core.captures.add_capture(conn: psycopg.AsyncConnection[Any], *, text: str, created_by: str | None = None, summary: str | None = None, sensitivity_hint: str = DEFAULT_SENSITIVITY_HINT, signals: dict[str, Any] | None = None, id: str | None = None) luplo.core.models.Capture
async luplo.core.captures.list_captures(conn: psycopg.AsyncConnection[Any], *, review_state: str | None = None, include_discarded: bool = False, include_redacted: bool = False, since: datetime.datetime | None = None, until: datetime.datetime | None = None, limit: int = 100) list[luplo.core.models.Capture]
async luplo.core.captures.get_capture(conn: psycopg.AsyncConnection[Any], capture_id: str) luplo.core.models.Capture | None
async luplo.core.captures.search_captures(conn: psycopg.AsyncConnection[Any], *, query: str | None = None, review_state: str | None = None, include_discarded: bool = False, include_redacted: bool = False, since: datetime.datetime | None = None, until: datetime.datetime | None = None, limit: int = 50) list[luplo.core.models.Capture]
async luplo.core.captures.set_capture_state(conn: psycopg.AsyncConnection[Any], capture_id: str, *, review_state: str, actor_id: str | None = None) luplo.core.models.Capture
async luplo.core.captures.discard_capture(conn: psycopg.AsyncConnection[Any], capture_id: str, *, actor_id: str | None = None) luplo.core.models.Capture
async luplo.core.captures.redact_capture(conn: psycopg.AsyncConnection[Any], capture_id: str, *, redacted_by: str | None = None) luplo.core.models.Capture
async luplo.core.captures.annotate_capture(conn: psycopg.AsyncConnection[Any], capture_id: str, *, summary: str | None = None, sensitivity_hint: str | None = None, signals: dict[str, Any] | None = None) luplo.core.models.Capture
async luplo.core.captures.promote_capture_to_item(conn: psycopg.AsyncConnection[Any], capture_id: str, data: luplo.core.models.ItemCreate) tuple[luplo.core.models.Capture, luplo.core.models.Item]