mirror of
https://github.com/fosrl/pangolin.git
synced 2026-02-21 20:36:37 +00:00
✨ search, filter & paginate sites table
This commit is contained in:
@@ -103,7 +103,12 @@ const listSitesSchema = z.object({
|
||||
.enum(["megabytesIn", "megabytesOut"])
|
||||
.optional()
|
||||
.catch(undefined),
|
||||
order: z.enum(["asc", "desc"]).optional().default("asc").catch("asc")
|
||||
order: z.enum(["asc", "desc"]).optional().default("asc").catch("asc"),
|
||||
online: z
|
||||
.enum(["true", "false"])
|
||||
.transform((v) => v === "true")
|
||||
.optional()
|
||||
.catch(undefined)
|
||||
});
|
||||
|
||||
function querySitesBase() {
|
||||
@@ -172,7 +177,6 @@ export async function listSites(
|
||||
)
|
||||
);
|
||||
}
|
||||
const { pageSize, page, query, sort_by, order } = parsedQuery.data;
|
||||
|
||||
const parsedParams = listSitesParamsSchema.safeParse(req.params);
|
||||
if (!parsedParams.success) {
|
||||
@@ -215,6 +219,9 @@ export async function listSites(
|
||||
.where(eq(sites.orgId, orgId));
|
||||
}
|
||||
|
||||
const { pageSize, page, query, sort_by, order, online } =
|
||||
parsedQuery.data;
|
||||
|
||||
const accessibleSiteIds = accessibleSites.map((site) => site.siteId);
|
||||
const baseQuery = querySitesBase();
|
||||
|
||||
@@ -231,6 +238,9 @@ export async function listSites(
|
||||
)
|
||||
);
|
||||
}
|
||||
if (typeof online !== "undefined") {
|
||||
conditions = and(conditions, eq(sites.online, online));
|
||||
}
|
||||
|
||||
const countQuery = db
|
||||
.select({ count: count() })
|
||||
|
||||
Reference in New Issue
Block a user