import { kysely } from "https://deno.land/x/kysely_postgrs_js_dialect@v0.27.4/mod.ts";
const { WithSchemaPlugin } = kysely;
Methods
This is called for each query before it is executed. You can modify the query by transforming its OperationNode tree provided in PluginTransformQueryArgs.node | args.node and returning the transformed tree. You'd usually want to use an OperationNodeTransformer for this.
If you need to pass some query-related data between this method and transformResult
you
can use a WeakMap
with PluginTransformQueryArgs.queryId | args.queryId as the key:
const plugin = {
data: new WeakMap<QueryId, SomeData>(),
transformQuery(args: PluginTransformQueryArgs): RootOperationNode {
this.data.set(args.queryId, something)
return args.node
},
transformResult(args: PluginTransformResultArgs): QueryResult<UnknownRow> {
const data = this.data.get(args.queryId)
return args.result
}
}
You should use a WeakMap
instead of a Map
or some other strong references because transformQuery
is not always matched by a call to transformResult
which would leave orphaned items in the map
and cause a memory leak.
This method is called for each query after it has been executed. The result of the query can be accessed through PluginTransformResultArgs.result | args.result. You can modify the result and return the modifier result.