UNPKG

kysely

Version:
134 lines (133 loc) 3.87 kB
/// <reference types="./select-query-node.d.ts" /> import { freeze } from '../util/object-utils.js'; import { FromNode } from './from-node.js'; import { GroupByNode } from './group-by-node.js'; import { HavingNode } from './having-node.js'; import { OrderByNode } from './order-by-node.js'; /** * @internal */ export const SelectQueryNode = freeze({ is(node) { return node.kind === 'SelectQueryNode'; }, create(withNode) { return freeze({ kind: 'SelectQueryNode', ...(withNode && { with: withNode }), }); }, createFrom(fromItems, withNode) { return freeze({ kind: 'SelectQueryNode', from: FromNode.create(fromItems), ...(withNode && { with: withNode }), }); }, cloneWithSelections(select, selections) { return freeze({ ...select, selections: select.selections ? freeze([...select.selections, ...selections]) : freeze(selections), }); }, cloneWithDistinctOn(select, expressions) { return freeze({ ...select, distinctOn: select.distinctOn ? freeze([...select.distinctOn, ...expressions]) : freeze(expressions), }); }, cloneWithFrontModifier(select, modifier) { return freeze({ ...select, frontModifiers: select.frontModifiers ? freeze([...select.frontModifiers, modifier]) : freeze([modifier]), }); }, cloneWithEndModifier(select, modifier) { return freeze({ ...select, endModifiers: select.endModifiers ? freeze([...select.endModifiers, modifier]) : freeze([modifier]), }); }, cloneWithOrderByItems(selectNode, items) { return freeze({ ...selectNode, orderBy: selectNode.orderBy ? OrderByNode.cloneWithItems(selectNode.orderBy, items) : OrderByNode.create(items), }); }, cloneWithGroupByItems(selectNode, items) { return freeze({ ...selectNode, groupBy: selectNode.groupBy ? GroupByNode.cloneWithItems(selectNode.groupBy, items) : GroupByNode.create(items), }); }, cloneWithLimit(selectNode, limit) { return freeze({ ...selectNode, limit, }); }, cloneWithOffset(selectNode, offset) { return freeze({ ...selectNode, offset, }); }, cloneWithFetch(selectNode, fetch) { return freeze({ ...selectNode, fetch, }); }, cloneWithHaving(selectNode, operation) { return freeze({ ...selectNode, having: selectNode.having ? HavingNode.cloneWithOperation(selectNode.having, 'And', operation) : HavingNode.create(operation), }); }, cloneWithSetOperations(selectNode, setOperations) { return freeze({ ...selectNode, setOperations: selectNode.setOperations ? freeze([...selectNode.setOperations, ...setOperations]) : freeze([...setOperations]), }); }, cloneWithoutSelections(select) { return freeze({ ...select, selections: [], }); }, cloneWithoutLimit(select) { return freeze({ ...select, limit: undefined, }); }, cloneWithoutOffset(select) { return freeze({ ...select, offset: undefined, }); }, cloneWithoutOrderBy(select) { return freeze({ ...select, orderBy: undefined, }); }, });