added province filter
This commit is contained in:
@@ -1,9 +1,16 @@
|
|||||||
import { router, publicProcedure, protectedProcedure } from "./trpc";
|
import { router, publicProcedure, protectedProcedure } from "./trpc";
|
||||||
import { db } from "./db";
|
import { db } from "./db";
|
||||||
import { imageToUser, opinion, user, userOpinion } from "./schema";
|
import {
|
||||||
|
imageToUser,
|
||||||
|
opinion,
|
||||||
|
province,
|
||||||
|
user,
|
||||||
|
userOpinion,
|
||||||
|
zone,
|
||||||
|
} from "./schema";
|
||||||
import { createInsertSchema } from "drizzle-zod";
|
import { createInsertSchema } from "drizzle-zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { SQL, count, eq } from "drizzle-orm";
|
import { SQL, count, eq, inArray } from "drizzle-orm";
|
||||||
import { Config } from "./config";
|
import { Config } from "./config";
|
||||||
import { TRPCError } from "@trpc/server";
|
import { TRPCError } from "@trpc/server";
|
||||||
import * as jwt from "jsonwebtoken";
|
import * as jwt from "jsonwebtoken";
|
||||||
@@ -83,6 +90,7 @@ export const userRoute = router({
|
|||||||
group: z.number().optional(),
|
group: z.number().optional(),
|
||||||
zone: z.number().optional(),
|
zone: z.number().optional(),
|
||||||
opinionCount: z.number().default(3),
|
opinionCount: z.number().default(3),
|
||||||
|
province: z.number().optional(),
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
.query(
|
.query(
|
||||||
@@ -92,7 +100,8 @@ export const userRoute = router({
|
|||||||
input.limit,
|
input.limit,
|
||||||
input.opinionCount,
|
input.opinionCount,
|
||||||
input.group,
|
input.group,
|
||||||
input.zone
|
input.zone,
|
||||||
|
input.province
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
@@ -102,8 +111,20 @@ async function getAllUser(
|
|||||||
limit: number,
|
limit: number,
|
||||||
opinionLimit: number,
|
opinionLimit: number,
|
||||||
group?: number,
|
group?: number,
|
||||||
zone?: number
|
zoneId?: number,
|
||||||
|
provinceId?: number
|
||||||
) {
|
) {
|
||||||
|
let zoneIds: number[] = [];
|
||||||
|
if (provinceId) {
|
||||||
|
zoneIds = await db
|
||||||
|
.select({ id: zone.id })
|
||||||
|
.from(zone)
|
||||||
|
.where(eq(zone.province, provinceId))
|
||||||
|
.then((queryResult) => queryResult.map((v) => v.id));
|
||||||
|
if (zoneIds.length === 0) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
let users = await db.query.user.findMany({
|
let users = await db.query.user.findMany({
|
||||||
with: {
|
with: {
|
||||||
group: true,
|
group: true,
|
||||||
@@ -121,8 +142,11 @@ async function getAllUser(
|
|||||||
if (group) {
|
if (group) {
|
||||||
conditions.push(eq(user.group, group));
|
conditions.push(eq(user.group, group));
|
||||||
}
|
}
|
||||||
if (zone) {
|
if (zoneId) {
|
||||||
conditions.push(eq(user.zone, zone));
|
conditions.push(eq(user.zone, zoneId));
|
||||||
|
}
|
||||||
|
if (zoneIds.length > 0) {
|
||||||
|
conditions.push(inArray(user.zone, zoneIds));
|
||||||
}
|
}
|
||||||
return and(...conditions);
|
return and(...conditions);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user