{"version":3,"sources":["../src/sql/Select.ts"],"sourcesContent":["import { Column, OrderColumn } from './Column';\nimport { Join } from './Join';\nimport { SqlQuery } from './SqlQuery';\nimport { Table } from './Table';\nimport { List, toList } from '../types/List';\nimport { ifGet } from '../types/Get';\n\nexport class Select extends SqlQuery {\n  protected ordered: List<OrderColumn> = toList();\n  protected grouped: List<Column> = toList();\n  protected _top = 0;\n  protected _limit = 0;\n  protected _offset = 0;\n\n  constructor(\n    table: Table | Join,\n    readonly columns: List<Column> = toList()\n  ) {\n    super(table);\n  }\n\n  from(t?: Table | Join): this {\n    this.table = t ?? this.table;\n    return this;\n  }\n\n  orderBy = (...ordered: OrderColumn[]): this => {\n    this.ordered.add(ordered);\n    return this;\n  };\n\n  groupBy(...grouped: Column[]): this {\n    this.grouped.add(grouped);\n    return this;\n  }\n\n  top(t: number): this {\n    this._top = t;\n    return this;\n  }\n\n  limit(l: number): this {\n    this._limit = l;\n    return this;\n  }\n\n  offset(o: number): this {\n    this._offset = o;\n    return this;\n  }\n\n  toString(): string {\n    return (\n      `SELECT ` +\n      ifGet(this._top, `TOP ${this._top} `, '') +\n      ifGet(this.columns.length, this.columns.join(', '), '*') +\n      ` FROM ${this.table}` +\n      ifGet(this.clauses.length, ` WHERE ${this.clauses.join(' AND ')}`, '') +\n      ifGet(this.grouped.length, ` GROUP BY ${this.grouped.join(', ')}`, '') +\n      ifGet(this.ordered.length, ` ORDERED BY ${this.ordered.join(', ')}`, '') +\n      ifGet(this._limit, ` LIMIT ${this._limit}`, '') +\n      ifGet(this._offset, ` OFFSET ${this._offset};`, ';')\n    );\n  }\n}\n"],"mappings":";;;;;;;;;;;AAOO,IAAM,SAAN,cAAqB,SAAS;AAAA,EAOnC,YACE,OACS,UAAwB,OAAO,GACxC;AACA,UAAM,KAAK;AAFF;AAAA,EAGX;AAAA,EAXU,UAA6B,OAAO;AAAA,EACpC,UAAwB,OAAO;AAAA,EAC/B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EASpB,KAAK,GAAwB;AAC3B,SAAK,QAAQ,KAAK,KAAK;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,IAAI,YAAiC;AAC7C,SAAK,QAAQ,IAAI,OAAO;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,SAAyB;AAClC,SAAK,QAAQ,IAAI,OAAO;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,GAAiB;AACnB,SAAK,OAAO;AACZ,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,GAAiB;AACrB,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,GAAiB;AACtB,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEA,WAAmB;AACjB,WACE,YACA,MAAM,KAAK,MAAM,OAAO,KAAK,IAAI,KAAK,EAAE,IACxC,MAAM,KAAK,QAAQ,QAAQ,KAAK,QAAQ,KAAK,IAAI,GAAG,GAAG,IACvD,SAAS,KAAK,KAAK,KACnB,MAAM,KAAK,QAAQ,QAAQ,UAAU,KAAK,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,IACrE,MAAM,KAAK,QAAQ,QAAQ,aAAa,KAAK,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IACrE,MAAM,KAAK,QAAQ,QAAQ,eAAe,KAAK,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IACvE,MAAM,KAAK,QAAQ,UAAU,KAAK,MAAM,IAAI,EAAE,IAC9C,MAAM,KAAK,SAAS,WAAW,KAAK,OAAO,KAAK,GAAG;AAAA,EAEvD;AACF;","names":[]}