{
  "schema": "leumas.docs.page/1",
  "id": "pkg:@leumas/db",
  "slug": "packages/db",
  "kind": "capabilities",
  "bucket": "package",
  "title": "@leumas/db",
  "name": "@leumas/db",
  "eyebrow": null,
  "chip": null,
  "summary": "Leumas database runtime — libSQL/SQLite client + Drizzle instance + migrations + seed + the generic universal-CRUD repository (ownership + history).",
  "keywords": [
    "migrations",
    "repository",
    "libsql",
    "drizzle",
    "db api",
    "leumas db",
    "sqlite",
    "history"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# @leumas/db\n\nThe Leumas **database runtime** — the one place that opens the DB and runs CRUD.\n\n- **libSQL/SQLite client + Drizzle instance** (`src/client.js`), typed by [`@leumas/schemas`](../schemas).\n- **Migrations** (`src/migrate.js`) + `drizzle.config.js` — generate SQL with drizzle-kit, apply with the libSQL migrator.\n- **Seed** (`src/seed.js`) — roles, permissions, role→permission grants, and an admin user.\n- **Repository** (`src/repository.js`) — the DB-agnostic universal CRUD (create/read/update/delete/filter/search/clone + `record_history`), harvested from leumas-api's Mongo-locked UniversalCrud.\n- **Ownership** (`src/ownership.js`) — `isOwner`/`canRead`/`canWrite`/`canClone` guards.\n\n```js\nimport { getDb, createRepository, runMigrations, seed } from '@leumas/db';\nawait runMigrations();          // apply ./drizzle SQL\nawait seed();                   // roles + admin\nconst repo = createRepository();\nconst post = await repo.create('posts', { authorId, text: 'hi' }, { actor: authorId });\n```\n\n## Local & scale\n\nDefault: `file:./data/leumas.db` (embedded, zero-config). Scale with **no app change**:\n\n| Goal | Env |\n|---|---|\n| Turso / libSQL server | `LEUMAS_DB_URL=libsql://…` + `LEUMAS_DB_AUTH_TOKEN=…` |\n| Encryption at rest | `LEUMAS_DB_KEY=…` |\n| Seed admin | `SEED_ADMIN_EMAIL`, `SEED_ADMIN_PASSWORD` |\n\n## Scripts\n\n```bash\npnpm --filter @leumas/db db:generate   # emit ./drizzle SQL from @leumas/schemas\npnpm --filter @leumas/db db:migrate    # apply migrations\npnpm --filter @leumas/db db:seed       # seed roles + admin\n```\n\nDynamic, app-defined collections (schema-less) are served by the connector in\n`shared/engines/middleware` against the **same** libSQL file — see that package.\n",
  "source": {
    "path": "shared/packages/db/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 1910,
    "hash": "426810e1c32bbe73664ff1367a0caa250184fc00"
  },
  "urls": {
    "html": "/p/packages/db",
    "json": "/docs/packages/db.json",
    "md": "/docs/packages/db.md"
  },
  "links": {
    "composes": [
      "pkg:@leumas/schemas"
    ],
    "usedBy": [
      "pkg:@leumas/auth",
      "pkg:@leumas/control",
      "pkg:@leumas/licensing",
      "pkg:@leumas/mcp",
      "pkg:@leumas/middleware",
      "pkg:@leumas/progression",
      "pkg:@leumas/router-kit",
      "pkg:@leumas/social-service"
    ],
    "product": [
      "pkg:@leumas/admin",
      "pkg:@leumas/studio"
    ],
    "howTo": [],
    "skills": []
  },
  "exports": {
    "total": 37,
    "component": 0,
    "hook": 0,
    "helper": 37,
    "names": [
      {
        "n": "and",
        "k": "helper"
      },
      {
        "n": "asc",
        "k": "helper"
      },
      {
        "n": "canClone",
        "k": "helper"
      },
      {
        "n": "canRead",
        "k": "helper"
      },
      {
        "n": "canWrite",
        "k": "helper"
      },
      {
        "n": "createRepository",
        "k": "helper"
      },
      {
        "n": "createRepository",
        "k": "helper"
      },
      {
        "n": "desc",
        "k": "helper"
      },
      {
        "n": "eq",
        "k": "helper"
      },
      {
        "n": "getClient",
        "k": "helper"
      },
      {
        "n": "getClient",
        "k": "helper"
      },
      {
        "n": "getDb",
        "k": "helper"
      },
      {
        "n": "getDb",
        "k": "helper"
      },
      {
        "n": "gt",
        "k": "helper"
      },
      {
        "n": "gte",
        "k": "helper"
      },
      {
        "n": "inArray",
        "k": "helper"
      },
      {
        "n": "isNull",
        "k": "helper"
      },
      {
        "n": "isOwner",
        "k": "helper"
      },
      {
        "n": "like",
        "k": "helper"
      },
      {
        "n": "lt",
        "k": "helper"
      },
      {
        "n": "lte",
        "k": "helper"
      },
      {
        "n": "maintainDb",
        "k": "helper"
      },
      {
        "n": "maintainDb",
        "k": "helper"
      },
      {
        "n": "ne",
        "k": "helper"
      },
      {
        "n": "or",
        "k": "helper"
      },
      {
        "n": "repository",
        "k": "helper"
      },
      {
        "n": "repository",
        "k": "helper"
      },
      {
        "n": "runMigrations",
        "k": "helper"
      },
      {
        "n": "schema",
        "k": "helper"
      },
      {
        "n": "schema",
        "k": "helper"
      },
      {
        "n": "seed",
        "k": "helper"
      },
      {
        "n": "sql",
        "k": "helper"
      },
      {
        "n": "startDbMaintenance",
        "k": "helper"
      },
      {
        "n": "startDbMaintenance",
        "k": "helper"
      },
      {
        "n": "stopDbMaintenance",
        "k": "helper"
      },
      {
        "n": "stopDbMaintenance",
        "k": "helper"
      },
      {
        "n": "upsertByUnique",
        "k": "helper"
      }
    ]
  }
}
