luplo.core.projects =================== .. py:module:: luplo.core.projects .. autoapi-nested-parse:: CRUD operations for the projects table. Projects are the top-level scope for all luplo data. Every item, system, work unit, and glossary group belongs to exactly one project. Functions --------- .. autoapisummary:: luplo.core.projects.create_project luplo.core.projects.get_project luplo.core.projects.list_projects Module Contents --------------- .. py:function:: create_project(conn: psycopg.AsyncConnection[Any], *, name: str, description: str | None = None, id: str | None = None) -> luplo.core.models.Project :async: Create a new project. :param conn: Async psycopg connection. :param name: Unique project name. :param description: Optional description. :param id: Optional ID override; auto-generated UUID4 if omitted. :returns: The newly created ``Project``. :raises psycopg.errors.UniqueViolation: If *name* already exists. .. py:function:: get_project(conn: psycopg.AsyncConnection[Any], project_id: str) -> luplo.core.models.Project | None :async: Fetch a project by ID. Returns ``None`` if not found. .. py:function:: list_projects(conn: psycopg.AsyncConnection[Any]) -> list[luplo.core.models.Project] :async: List all projects ordered by creation date (newest first).