Skip to main content
Module

x/kysely_deno_postgres_dialect/deps.ts>kysely.OperationNodeTransformer

Kysely dialect for PostgreSQL using the deno-postgres client.
Latest
class kysely.OperationNodeTransformer
import { kysely } from "https://deno.land/x/kysely_deno_postgres_dialect@v0.27.1/deps.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
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
transformNode<T extends OperationNode | undefined>(node: T): T