From 4b05be768a6e6c71a61345871f54e6ba67149aaa Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 28 May 2022 08:36:14 +0200 Subject: [PATCH] feat #1945: Added limit and offset to getFilterAsync and implemented setFlat --- src/server/db/ioRethink.js | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/server/db/ioRethink.js b/src/server/db/ioRethink.js index cba7d950..a9a9db64 100644 --- a/src/server/db/ioRethink.js +++ b/src/server/db/ioRethink.js @@ -77,7 +77,29 @@ module.exports = { return res; }, - getFilterAsync: async function ({ table, noDefault, filter }) { + getFilterAsync: async function ({ table, noDefault, filter, limit, offset }) { + let res = r + .table(table) + .filter(filter); + + if (offset) + res = res.skip(offset); + + if (limit) + res = res.limit(limit); + + await res.run(); + + if (res) + return res; + + if (!noDefault) + return []; + + return null; + }, + + getFilterFlat: async function ({ table, noDefault, filter }) { const res = await r .table(table) .filter(filter) @@ -129,6 +151,20 @@ module.exports = { } }, + setFlat: async function ({ + table, + value, + conflict = 'update' + }) { + try { + await r.table(table) + .insert(value, { conflict }) + .run(); + } catch (e) { + this.logError(e, table, JSON.stringify(value)); + } + }, + deleteAsync: async function ({ key, table