import { kysely } from "https://deno.land/x/kysely_postgrs_js_dialect@v0.27.3/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
transformAddColumn(node: AddColumnNode): AddColumnNodeprotected
transformAddConstraint(node: AddConstraintNode): AddConstraintNodeprotected
transformAddIndex(node: AddIndexNode): AddIndexNodeprotected
transformAggregateFunction(node: AggregateFunctionNode): AggregateFunctionNodeprotected
transformAlias(node: AliasNode): AliasNodeprotected
transformAlterColumn(node: AlterColumnNode): AlterColumnNodeprotected
transformAlterTable(node: AlterTableNode): AlterTableNodeprotected
transformAnd(node: AndNode): AndNodeprotected
transformBinaryOperation(node: BinaryOperationNode): BinaryOperationNodeprotected
transformCase(node: CaseNode): CaseNodeprotected
transformCast(node: CastNode): CastNodeprotected
transformCheckConstraint(node: CheckConstraintNode): CheckConstraintNodeprotected
transformColumn(node: ColumnNode): ColumnNodeprotected
transformColumnDefinition(node: ColumnDefinitionNode): ColumnDefinitionNodeprotected
transformColumnUpdate(node: ColumnUpdateNode): ColumnUpdateNodeprotected
transformCreateIndex(node: CreateIndexNode): CreateIndexNodeprotected
transformCreateSchema(node: CreateSchemaNode): CreateSchemaNodeprotected
transformCreateTable(node: CreateTableNode): CreateTableNodeprotected
transformCreateType(node: CreateTypeNode): CreateTypeNodeprotected
transformCreateView(node: CreateViewNode): CreateViewNodeprotected
transformDataType(node: DataTypeNode): DataTypeNodeprotected
transformDefaultInsertValue(node: DefaultInsertValueNode): DefaultInsertValueNodeprotected
transformDefaultValue(node: DefaultValueNode): DefaultValueNodeprotected
transformDeleteQuery(node: DeleteQueryNode): DeleteQueryNodeprotected
transformDropColumn(node: DropColumnNode): DropColumnNodeprotected
transformDropConstraint(node: DropConstraintNode): DropConstraintNodeprotected
transformDropIndex(node: DropIndexNode): DropIndexNodeprotected
transformDropSchema(node: DropSchemaNode): DropSchemaNodeprotected
transformDropTable(node: DropTableNode): DropTableNodeprotected
transformDropType(node: DropTypeNode): DropTypeNodeprotected
transformDropView(node: DropViewNode): DropViewNodeprotected
transformExplain(node: ExplainNode): ExplainNodeprotected
transformFetch(node: FetchNode): FetchNodeprotected
transformFrom(node: FromNode): FromNodeprotected
transformFunction(node: FunctionNode): FunctionNodeprotected
transformGenerated(node: GeneratedNode): GeneratedNodeprotected
transformGroupBy(node: GroupByNode): GroupByNodeprotected
transformGroupByItem(node: GroupByItemNode): GroupByItemNodeprotected
transformHaving(node: HavingNode): HavingNodeprotected
transformIdentifier(node: IdentifierNode): IdentifierNodeprotected
transformInsertQuery(node: InsertQueryNode): InsertQueryNodeprotected
transformJoin(node: JoinNode): JoinNodeprotected
transformJSONOperatorChain(node: JSONOperatorChainNode): JSONOperatorChainNodeprotected
transformJSONPath(node: JSONPathNode): JSONPathNodeprotected
transformJSONPathLeg(node: JSONPathLegNode): JSONPathLegNodeprotected
transformJSONReference(node: JSONReferenceNode): JSONReferenceNodeprotected
transformLimit(node: LimitNode): LimitNodeprotected
transformList(node: ListNode): ListNodeprotected
transformMatched(node: MatchedNode): MatchedNodeprotected
transformMergeQuery(node: MergeQueryNode): MergeQueryNodeprotected
transformModifyColumn(node: ModifyColumnNode): ModifyColumnNodeprotected
transformNodeImpl<T extends OperationNode>(node: T): Tprotected
transformNodeList<T extends ReadonlyArray<OperationNode> | undefined>(list: T): Tprotected
transformOffset(node: OffsetNode): OffsetNodeprotected
transformOn(node: OnNode): OnNodeprotected
transformOnConflict(node: OnConflictNode): OnConflictNodeprotected
transformOnDuplicateKey(node: OnDuplicateKeyNode): OnDuplicateKeyNodeprotected
transformOperator(node: OperatorNode): OperatorNodeprotected
transformOr(node: OrNode): OrNodeprotected
transformOrderBy(node: OrderByNode): OrderByNodeprotected
transformOrderByItem(node: OrderByItemNode): OrderByItemNodeprotected
transformOver(node: OverNode): OverNodeprotected
transformParens(node: ParensNode): ParensNodeprotected
transformPartitionBy(node: PartitionByNode): PartitionByNodeprotected
transformPartitionByItem(node: PartitionByItemNode): PartitionByItemNodeprotected
transformPrimitiveValueList(node: PrimitiveValueListNode): PrimitiveValueListNodeprotected
transformRaw(node: RawNode): RawNodeprotected
transformReference(node: ReferenceNode): ReferenceNodeprotected
transformReferences(node: ReferencesNode): ReferencesNodeprotected
transformRenameColumn(node: RenameColumnNode): RenameColumnNodeprotected
transformReturning(node: ReturningNode): ReturningNodeprotected
transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNodeprotected
transformSelectAll(node: SelectAllNode): SelectAllNodeprotected
transformSelection(node: SelectionNode): SelectionNodeprotected
transformSelectModifier(node: SelectModifierNode): SelectModifierNodeprotected
transformSelectQuery(node: SelectQueryNode): SelectQueryNodeprotected
transformSetOperation(node: SetOperationNode): SetOperationNodeprotected
transformTable(node: TableNode): TableNodeprotected
transformTop(node: TopNode): TopNodeprotected
transformTuple(node: TupleNode): TupleNodeprotected
transformUnaryOperation(node: UnaryOperationNode): UnaryOperationNodeprotected
transformUniqueConstraint(node: UniqueConstraintNode): UniqueConstraintNodeprotected
transformUpdateQuery(node: UpdateQueryNode): UpdateQueryNodeprotected
transformUsing(node: UsingNode): UsingNodeprotected
transformValue(node: ValueNode): ValueNodeprotected
transformValueList(node: ValueListNode): ValueListNodeprotected
transformValues(node: ValuesNode): ValuesNodeprotected
transformWhen(node: WhenNode): WhenNodeprotected
transformWhere(node: WhereNode): WhereNodeprotected
transformWith(node: WithNode): WithNodetransformNode<T extends OperationNode | undefined>(node: T): T