@logarys/query-adapter-contracts
v0.1.0
Published
Shared contracts for Logarys query adapters.
Maintainers
Readme
@logarys/query-adapter-contracts
Shared TypeScript contracts for Logarys query adapters.
This package does not convert queries by itself. It defines the interfaces used by logarys-console-manager and by external adapter packages such as @logarys/rsql-mongodb-adapter.
Installation
npm install @logarys/query-adapter-contractsMain contract
import type {
QueryAdapter,
QueryAdapterInput,
QueryAdapterMetadata,
QueryAdapterResult,
} from "@logarys/query-adapter-contracts";
export class MyAdapter implements QueryAdapter {
getMetadata(): QueryAdapterMetadata {
return {
name: "my-adapter",
language: "rsql",
target: "mongodb",
version: "1.0.0",
};
}
supports(language: string, target: string): boolean {
return language === "rsql" && target === "mongodb";
}
convert(input: QueryAdapterInput): QueryAdapterResult {
return {
filter: {
raw: input.query,
},
};
}
}Standard adapter package export
Every external adapter package should expose a createAdapter() function:
import type { QueryAdapter } from "@logarys/query-adapter-contracts";
import { MyAdapter } from "./my-adapter.js";
export function createAdapter(): QueryAdapter {
return new MyAdapter();
}This allows logarys-console-manager to load adapters dynamically from npm packages or Git repositories.
Field whitelist
Adapters can receive a whitelist of allowed fields:
const result = adapter.convert({
query: "level==error;host==api-01",
options: {
allowedFields: {
level: {
type: "string",
operators: ["==", "!=", "=in=", "=out="],
},
host: {
type: "string",
targetPath: "metadata.host",
operators: ["==", "!=", "=contains="],
sortable: true,
},
timestamp: {
type: "date",
operators: [">", ">=", "<", "<="],
sortable: true,
},
},
},
});Build
npm run buildTest
npm testPublish
npm publish --access public