Skip to main content
Module

x/kysely_deno_postgres_dialect/mod.ts>kysely.DeduplicateJoinsPlugin#transformQuery

Kysely dialect for PostgreSQL using the deno-postgres client.
Latest
method kysely.DeduplicateJoinsPlugin.prototype.transformQuery
import { kysely } from "https://deno.land/x/kysely_deno_postgres_dialect@v0.27.1/mod.ts";
const { DeduplicateJoinsPlugin } = kysely;

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.