import { andWhere, leftJoin, limit, offset, on, order, orWhere, quickSelect, rightJoin, sbCountAndFormat, sbFormat, sbFormation, sbNew, select, table, where, } from "../src/aurora-data-api-query-builder"; import { EntityFieldType } from "../src/entity-schema"; import { QueryBuilderBaseParamEnum } from "../src/enums"; describe("Test Select Query Builder", () => { test("select simple", async (done) => { const qbconf = sbNew(); const qb = sbFormation({ andWhere, leftJoin, on, orWhere, rightJoin, format: sbFormat, select, quickSelect, table, where, }, qbconf); qb.select({ name: "u.id", type: "long", }); qb.select({ name: "u.name", type: "string", alias: "name", }); qb.quickSelect("u.age", "age"); qb.quickSelect("DATE(u.createdAt)"); qb.table("user", "u"); qb.where("u.id = :?", [{ type: QueryBuilderBaseParamEnum.Long, val: 1, }]); const result = qb.format(); expect(result).toEqual({ parameters: [ { name: "p0", value: { longValue: 1, }, }, ], selectedFields: [ { name: "id", type: "long", }, { name: "name", type: "string", }, { name: "age", type: null, }, { name: "createdAt", type: null, }, ], sql: "SELECT u.id, u.name AS `name`, u.age AS `age`, DATE(u.createdAt) FROM user AS u WHERE u.id = :p0;", }); done(); }); test("select multiple", async (done) => { const qbconf = sbNew(); const qb = sbFormation({ andWhere, leftJoin, on, orWhere, rightJoin, countAndFormat: sbCountAndFormat, format: sbFormat, limit, offset, select, quickSelect, table, where, order, }, qbconf); qb.select({ name: "id", type: "long", }); qb.select({ name: "name", type: "string", }); qb.table("user"); qb.order("id DESC"); qb.limit(10); qb.offset(10); const result = qb.format(); expect(result).toEqual({ parameters: [], selectedFields: [ { name: "id", type: "long", }, { name: "name", type: "string", }, ], sql: "SELECT id, name FROM user ORDER BY id DESC LIMIT 10 OFFSET 10;", }); const resultcount = qb.countAndFormat({ name: "num", type: "long", }); expect(resultcount).toEqual({ parameters: [], selectedFields: [ { name: "num", type: "long", }, ], sql: "SELECT num FROM user;", }); done(); }); });