import { parseAverageSelection, parseMaxSelection, parseMinSelection, parseSumSelection } from '../../parsing/selection/aggregate_column_select_parsing' import {createCountSelection} from '../../parsing/selection/count_selection' import {Runnable} from '../../databases/database_context' import {SelectStatement} from '../../statements/select_statement' export class SelectScalar implements Runnable { constructor(public statement: SelectStatement) {} readonly clientInstruction = 'scalar' } export function maximizeColumn(statement: SelectStatement, max: Function): SelectScalar { return new SelectScalar( { ...statement, selection: parseMaxSelection(max) }) } export function minimizeColumn(statement: SelectStatement, min: Function): SelectScalar { return new SelectScalar( { ...statement, selection: parseMinSelection(min) }) } export function sumColumn(statement: SelectStatement, sum: Function): SelectScalar { return new SelectScalar( { ...statement, selection: parseSumSelection(sum) }) } export function averageColumn(statement: SelectStatement, average: Function): SelectScalar { return new SelectScalar( { ...statement, selection: parseAverageSelection(average) }) } export function countRows(statement: SelectStatement): SelectScalar { return new SelectScalar( { ...statement, selection: createCountSelection() }) }