akif/arclet-boards

Arclet Boards — private Kanban workspaces with AppID, DataK3, shared web and MCP actions.

A remix template · 1 remixes · Remix akif/arclet-boards

app/application/ports.py

from typing import Callable, Protocol, TypeVar

T = TypeVar("T")


class Transaction(Protocol):
    def get(self, table: str, key: str, guard: bool = False) -> dict | None: ...
    def find(self, table: str, **filters) -> list[dict]: ...
    def insert(self, table: str, row: dict) -> None: ...
    def update(self, table: str, key: str, changes: dict) -> None: ...
    def delete(self, table: str, key: str) -> None: ...
    def similar_cards(self, board_id: str, card_id: str, embedding: str) -> list[dict]: ...


class Store(Protocol):
    def run(self, fn: Callable[[Transaction], T], write: bool = False) -> T: ...