@crossfox/query-handler
v0.1.1
Published
HTTP list API layer on @crossfox/db: filters, sort, search, relations, cursor pagination, cache, optional Elysia plugin.
Downloads
174
Maintainers
Readme
@crossfox/query-handler
HTTP list API layer on @crossfox/db: filters, sort, search, relations (hasMany), cursor pagination, in-memory result cache, optional Elysia plugin.
Requires Bun and peer @crossfox/db.
Install
bun add @crossfox/query-handler @crossfox/db
# optional Elysia adapter:
bun add elysiaQuick start
import { setupDb, mysqlFromEnv, createSchema } from "@crossfox/db";
import { queryHandler, configureQueryHandler } from "@crossfox/query-handler";
await setupDb({ mysql: mysqlFromEnv() });
configureQueryHandler({ isDev: true, strictFilters: true });
const User = createSchema<{ id: number; name: string; status: number }>("users", {
primaryKey: "id",
});
// In an Elysia handler — return the instance; plugin calls .run()
return queryHandler(User, query, {
filters: { status: "number", name: "string" },
sort: ["id", "!name"],
maxLimit: 50,
});Entry points
| import | contents |
|---|---|
| @crossfox/query-handler | queryHandler, createQueryHandler, configureQueryHandler, cache helpers |
| @crossfox/query-handler/elysia | queryHandlerPlugin, typeQuerySchema |
| @crossfox/query-handler/schema | TypeBox query schema only |
import { Elysia } from "elysia";
import { queryHandlerPlugin } from "@crossfox/query-handler/elysia";
new Elysia().use(queryHandlerPlugin);License
PolyForm Noncommercial 1.0.0 —
free for non-commercial use; copyright notice required
(Required Notice: Copyright Oleksii Fursov).
Commercial use (for-profit products, SaaS, client work, etc.) needs a separate written license from the author: [email protected].
