Psql multikey (#9852)

* perf: convert promise.all to single query

* perf: single query for removeBulk

* perf: list
This commit is contained in:
Barış Soner Uşaklı
2021-10-01 19:36:42 -04:00
committed by GitHub
parent ea04aeded4
commit e6a17a6349
3 changed files with 60 additions and 60 deletions

View File

@@ -9,28 +9,18 @@ module.exports = function (module) {
}
await module.transaction(async (client) => {
async function doPrepend(value) {
await client.query({
name: 'listPrepend',
text: `
INSERT INTO "legacy_list" ("_key", "array")
VALUES ($1::TEXT, ARRAY[$2::TEXT])
ON CONFLICT ("_key")
DO UPDATE SET "array" = ARRAY[$2::TEXT] || "legacy_list"."array"`,
values: [key, value],
});
}
await helpers.ensureLegacyObjectType(client, key, 'list');
if (Array.isArray(value)) {
// TODO: perf make single query
for (const v of value) {
// eslint-disable-next-line
await doPrepend(v);
}
return;
}
await doPrepend(value);
value = Array.isArray(value) ? value : [value];
value.reverse();
await client.query({
name: 'listPrependValues',
text: `
INSERT INTO "legacy_list" ("_key", "array")
VALUES ($1::TEXT, $2::TEXT[])
ON CONFLICT ("_key")
DO UPDATE SET "array" = EXCLUDED.array || "legacy_list"."array"`,
values: [key, value],
});
});
};
@@ -39,27 +29,18 @@ module.exports = function (module) {
return;
}
await module.transaction(async (client) => {
async function doAppend(value) {
await client.query({
name: 'listAppend',
text: `
INSERT INTO "legacy_list" ("_key", "array")
VALUES ($1::TEXT, ARRAY[$2::TEXT])
ON CONFLICT ("_key")
DO UPDATE SET "array" = "legacy_list"."array" || ARRAY[$2::TEXT]`,
values: [key, value],
});
}
value = Array.isArray(value) ? value : [value];
await helpers.ensureLegacyObjectType(client, key, 'list');
if (Array.isArray(value)) {
// TODO: perf make single query
for (const v of value) {
// eslint-disable-next-line
await doAppend(v);
}
return;
}
await doAppend(value);
await client.query({
name: 'listAppend',
text: `
INSERT INTO "legacy_list" ("_key", "array")
VALUES ($1::TEXT, $2::TEXT[])
ON CONFLICT ("_key")
DO UPDATE SET "array" = "legacy_list"."array" || EXCLUDED.array`,
values: [key, value],
});
});
};