Skip to main content
Module

x/kysely_deno_postgres_dialect/mod.ts>kysely.Expression

Kysely dialect for PostgreSQL using the deno-postgres client.
Go to Latest
interface kysely.Expression
Re-export
import { type kysely } from "https://deno.land/x/kysely_deno_postgres_dialect@v0.27.0/mod.ts";
const { Expression } = kysely;

Expression represents an arbitrary SQL expression with a type.

Most Kysely methods accept instances of Expression and most classes like SelectQueryBuilder and the return value of the sql template tag implement it.

const exp1: Expression<string> = sql<string>`CONCAT('hello', ' ', 'world')`
const exp2: Expression<{ first_name: string }> = db.selectFrom('person').select('first_name')

You can implement the Expression interface to create your own type-safe utilities for Kysely.

Methods

getter
expressionType(): T | undefined

All expressions need to have this getter for complicated type-related reasons. Simply add this getter for your expression and always return undefined from it:

class SomeExpression<T> implements Expression<T> {
  get expressionType(): T | undefined {
    return undefined
  }
}

The getter is needed to make the expression assignable to another expression only if the types T are assignable. Without this property (or some other property that references T), you could assing Expression<string> to Expression<number>.

toOperationNode(): OperationNode

Creates the OperationNode that describes how to compile this expression into SQL.

If you are creating a custom expression, it's often easiest to use the sql template tag to build the node:

class SomeExpression<T> implements Expression<T> {
  toOperationNode(): OperationNode {
    return sql`some sql here`.toOperationNode()
  }
}