import { sql } from '..' import { Constructor, Expression, expression } from '../expressions' import { ArrayArg, ArrayType, BigintArg, BooleanType } from '../types' export function ArrayOps (Base: T) { return class ArrayOps extends Base { overlap (other: ArrayArg): Expression { return expression`${this} && ${other}` } unshift (other: ArrayArg): Expression { return expression`${other} || ${this}` } push (other: ArrayArg): Expression { return expression`${this} || ${other}` } item (l: BigintArg, u?: BigintArg): Expression { return expression`${this}[${l}${u !== undefined ? sql`:${u}` : sql``}]` } } }