Skip to main content
Module

x/kysely_deno_postgres_dialect/mod.ts>kysely.DeduplicateJoinsPlugin

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

Plugin that removes duplicate joins from queries.

See this recipe

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.