@farming-labs/orm

Integrations

Farming Labs ORM lets a package or app write its storage layer once, then run it through the actual database or ORM stack the app already owns.

That usually means:

  1. define one schema with @farming-labs/orm
  2. generate app-facing artifacts when a stack wants them
  3. run the unified query/runtime layer against the real client the app passes in

So instead of building one adapter for Prisma, another for Drizzle, another for Kysely, another for MongoDB, and another for Firestore, the package can keep one storage contract and let the runtime layer handle the translation.

If you want the exact support answer, use the Support Matrix. This page is the simpler overview.

Integration families

Generation-first SQL stacks

Use these when the app wants generated artifacts:

These are the right fit when the app already wants schema.prisma, generated Drizzle tables, or plain SQL DDL files as part of its own workflow.

Runtime-first SQL and graph stacks

Use these when the app already owns a live relational client:

This is the path for package authors who want to accept a raw client and keep the higher-level storage logic unchanged.

PostgreSQL platforms

Hosted PostgreSQL platforms such as Supabase can fit through either the raw PostgreSQL layer or the direct Supabase JS client runtime.

That means the same schema can still power:

Document and key-value runtimes

Farming Labs ORM also supports document and key-value style runtimes when the app is not SQL-first:

These runtimes still keep the same schema and query API shape, but they rely more heavily on fallback relation loading and ORM-managed lookup behavior rather than native SQL joins.

Two important boundaries:

What “supported” means

When a runtime is supported here, the unified ORM API already translates into real calls for that stack.

Examples:

Guides

· · · · · · · · · · · · · · · ·