Module

x/kysely_postgrs_js_dialect/mod.ts>kysely.OperationNodeTransformer

Kysely dialect for PostgreSQL using the Postgres.js client.
class kysely.OperationNodeTransformer
import { kysely } from "https://dotland.deno.dev/x/kysely_postgrs_js_dialect@v0.27.3/mod.ts";
const { OperationNodeTransformer } = kysely;

Transforms an operation node tree into another one.

Kysely queries are expressed internally as a tree of objects (operation nodes). OperationNodeTransformer takes such a tree as its input and returns a transformed deep copy of it. By default the OperationNodeTransformer does nothing. You need to override one or more methods to make it do something.

There's a method for each node type. For example if you'd like to convert each identifier (table name, column name, alias etc.) from camelCase to snake_case, you'd do something like this:

class CamelCaseTransformer extends OperationNodeTransformer {
  transformIdentifier(node: IdentifierNode): IdentifierNode {
    node = super.transformIdentifier(node),

    return {
      ...node,
      name: snakeCase(node.name),
    }
  }
}

const transformer = new CamelCaseTransformer()
const tree = transformer.transformNode(tree)

Properties

protected
readonly
nodeStack: OperationNode[]

Methods

protected
transformAddIndex(node: AddIndexNode): AddIndexNode
protected
transformAnd(node: AndNode): AndNode
protected
transformCast(node: CastNode): CastNode
protected
transformFunction(node: FunctionNode): FunctionNode
protected
transformNodeImpl<T extends OperationNode>(node: T): T
protected
transformNodeList<T extends ReadonlyArray<OperationNode> | undefined>(list: T): T
protected
transformOn(node: OnNode): OnNode
protected
transformOr(node: OrNode): OrNode
protected
transformRaw(node: RawNode): RawNode
protected
transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNode
protected
transformSelectModifier(node: SelectModifierNode): SelectModifierNode
protected
transformTop(node: TopNode): TopNode
transformNode<T extends OperationNode | undefined>(node: T): T