Skip to content

Commit

Permalink
feat: add filters
Browse files Browse the repository at this point in the history
  • Loading branch information
AbdelilahOu committed Feb 6, 2025
1 parent 2cbc9ac commit ddbf578
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
26 changes: 25 additions & 1 deletion apps/api/src/routes/readings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { createDatabaseConnection } from "@/db";
import { users, waterMeterReadings, waterMeters } from "@/db/schema";
import { createRouter } from "@/lib/create-app";
import { createRoute } from "@hono/zod-openapi";
import { eq, sql } from "drizzle-orm";
import { and, eq, gte, like, lte, not, sql } from "drizzle-orm";
import { z } from "zod";

const insertReadingSchema = z.object({
Expand Down Expand Up @@ -36,6 +36,14 @@ const readings = createRouter()
method: "get",
path: "/",
summary: "Get all water meter readings",
request: {
query: z.object({
name: z.string().optional(),
id: z.string().optional(),
periodStart: z.string().optional(),
periodEnd: z.string().optional(),
}),
},
responses: {
200: {
content: {
Expand All @@ -56,6 +64,7 @@ const readings = createRouter()
c.env.TURSO_CONNECTION_URL,
c.env.TURSO_AUTH_TOKEN,
);
const { name, id, periodStart, periodEnd } = c.req.valid("query");
const readings = await db
.select({
id: waterMeterReadings.id,
Expand All @@ -72,6 +81,21 @@ const readings = createRouter()
eq(waterMeters.id, waterMeterReadings.waterMeterId),
)
.leftJoin(users, eq(users.id, waterMeters.userId))
.where(
and(
not(eq(waterMeters.deleted, true)),
eq(waterMeters.id, id ?? waterMeters.id),
like(waterMeters.name, name ?? waterMeters.name),
gte(
waterMeterReadings.periodStart,
periodStart ?? waterMeterReadings.periodStart,
),
lte(
waterMeterReadings.periodEnd,
periodEnd ?? waterMeterReadings.periodEnd,
),
),
)
.orderBy(sql`${waterMeterReadings.createdAt} desc`)
.all();
return c.json(readings, 200);
Expand Down
17 changes: 15 additions & 2 deletions apps/api/src/routes/water-meters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { createDatabaseConnection } from "@/db";
import { waterMeters } from "@/db/schema";
import { createRouter } from "@/lib/create-app";
import { createRoute } from "@hono/zod-openapi";
import { and, eq, not, sql } from "drizzle-orm";
import { and, eq, like, not, sql } from "drizzle-orm";
import { z } from "zod";

const insertWaterMeterSchema = z.object({
Expand Down Expand Up @@ -32,6 +32,12 @@ const waterMeterRoute = createRouter()
createRoute({
method: "get",
path: "/",
request: {
query: z.object({
name: z.string().optional(),
id: z.string().optional(),
}),
},
summary: "Get all non-deleted water meters",
responses: {
200: {
Expand All @@ -53,10 +59,17 @@ const waterMeterRoute = createRouter()
c.env.TURSO_CONNECTION_URL,
c.env.TURSO_AUTH_TOKEN,
);
const { name, id } = c.req.valid("query");
const data = await db
.select()
.from(waterMeters)
.where(not(eq(waterMeters.deleted, true)))
.where(
and(
not(eq(waterMeters.deleted, true)),
eq(waterMeters.id, id ?? waterMeters.id),
like(waterMeters.name, name ?? waterMeters.name),
),
)
.orderBy(sql`${waterMeters.updatedAt} desc`)
.all();
return c.json(data, 200);
Expand Down

0 comments on commit ddbf578

Please sign in to comment.