From 889e07040e05663b80cca597090ba54d7e542e51 Mon Sep 17 00:00:00 2001 From: "Tristan B. Velloza Kildaire" Date: Sun, 1 Jan 2023 08:36:27 +0200 Subject: [PATCH] Added filtering support to \'listRecords()\' --- source/libpb.d | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/source/libpb.d b/source/libpb.d index 2ed66a2..5801d82 100644 --- a/source/libpb.d +++ b/source/libpb.d @@ -85,12 +85,13 @@ public class PocketBase * * Returns: A list of type RecordType */ - public RecordType[] listRecords(RecordType)(string table, ulong page = 1, ulong perPage = 30) + public RecordType[] listRecords(RecordType)(string table, ulong page = 1, ulong perPage = 30, string filter = "") { RecordType[] recordsOut; // Compute the query string string queryStr = "page="~to!(string)(page)~"&perPage="~to!(string)(perPage); + queryStr ~= cmp(filter, "") == 0 ? "" : "&filter="~filter; try { @@ -725,3 +726,33 @@ unittest p1 = pb.createRecord("dummy_auth", p1, true); pb.deleteRecord("dummy_auth", p1); } + +unittest +{ + import core.thread : Thread, dur; + import std.string : cmp; + + PocketBase pb = new PocketBase(); + + struct Person + { + string id; + string name; + int age; + } + + Person p1 = Person(); + p1.name = "Tristan Gonzales"; + p1.age = 23; + + Person p2 = Person(); + p2.name = p1.name; + p2.age = p1.age; + + p1 = pb.createRecord("dummy", p1); + p2 = pb.createRecord("dummy", p2); + + Person[] people = pb.listRecords!(Person)("dummy", 1, 30, "(id='"~p1.id~"')"); + assert(people.length == 1); + assert(cmp(people[0].id, p1.id) == 0); +}