import { fieldTypeToParamEnumFunc, set, } from "../src"; import { ubFormat, ubFormation, ubNew, } from "../src/aurora-data-api-query-builder/aurora-data-api-update-query-builder"; import { leftJoin, on, rightJoin, table, } from "../src/aurora-data-api-query-builder/join-query"; import { andWhere, orWhere, where, } from "../src/aurora-data-api-query-builder/where-query"; import { QueryBuilderBaseParamEnum } from "../src/enums"; describe("Test Update Query Builder", () => { test("update simple", async (done) => { const qbconf = ubNew(); const qb = ubFormation({ andWhere, orWhere, where, format: ubFormat, set, table, }, qbconf); qb.table("user", "u"); qb.set({ name: "u.name", type: QueryBuilderBaseParamEnum.String, val: "a name", }); qb.set({...{ name: "u.registered", type: QueryBuilderBaseParamEnum.Boolean, }, ...{val: false}}); qb.where("u.id = :?", [{ type: QueryBuilderBaseParamEnum.Long, val: 1, }]); const result = qb.format(); expect(result).toEqual({ parameters: [ { name: "p0", value: { stringValue: "a name", }, }, { name: "p1", value: { booleanValue: false, }, }, { name: "p2", value: { longValue: 1, }, }, ], sql: "UPDATE user AS u SET u.name = :p0, u.registered = :p1 WHERE u.id = :p2;", }); done(); }); test("update complicate", async (done) => { const qbconf = ubNew(); const qb = ubFormation({ andWhere, orWhere, where, format: ubFormat, leftJoin, on, rightJoin, set, table, }, qbconf); qb.table("account"); qb.leftJoin("user", "u"); qb.on("account.user_id = u.id"); qb.on("account.status_code = :?", [{ type: QueryBuilderBaseParamEnum.Long, val: 1, }]); qb.set({ name: "u.name", type: QueryBuilderBaseParamEnum.String, val: "a name", }); qb.set({...{ name: "u.registered", type: QueryBuilderBaseParamEnum.Boolean, }, ...{val: false}}); qb.set({ name: "account.open", type: QueryBuilderBaseParamEnum.Boolean, val: null, }); qb.where("u.id = :?", [{ type: QueryBuilderBaseParamEnum.Long, val: 1, }]); const result = qb.format(); expect(result).toEqual({ parameters: [ { name: "p0", value: { longValue: 1, }, }, { name: "p1", value: { stringValue: "a name", }, }, { name: "p2", value: { booleanValue: false, }, }, { name: "p3", value: { isNull: true, }, }, { name: "p4", value: { longValue: 1, }, }, ], sql: "UPDATE account LEFT JOIN user AS u ON account.user_id = u.id AND account.status_code = :p0 SET u.name = :p1, u.registered = :p2, account.open = :p3 WHERE u.id = :p4;", }); done(); }); });