32 lines
No EOL
1.2 KiB
TypeScript
32 lines
No EOL
1.2 KiB
TypeScript
import { z } from 'zod';
|
|
import { addressZones, addressAreas } from '@/src/db/schema'
|
|
import { eq, desc } from 'drizzle-orm';
|
|
import { db } from '@/src/db/db_index'
|
|
import { router,protectedProcedure } from '@/src/trpc/trpc-index'
|
|
|
|
const addressRouter = router({
|
|
getZones: protectedProcedure.query(async () => {
|
|
const zones = await db.select().from(addressZones).orderBy(desc(addressZones.addedAt));
|
|
return zones
|
|
}),
|
|
|
|
getAreas: protectedProcedure.query(async () => {
|
|
const areas = await db.select().from(addressAreas).orderBy(desc(addressAreas.createdAt));
|
|
return areas
|
|
}),
|
|
|
|
createZone: protectedProcedure.input(z.object({ zoneName: z.string().min(1) })).mutation(async ({ input }) => {
|
|
|
|
const zone = await db.insert(addressZones).values({ zoneName: input.zoneName }).returning();
|
|
return {zone: zone};
|
|
}),
|
|
|
|
createArea: protectedProcedure.input(z.object({ placeName: z.string().min(1), zoneId: z.number().nullable() })).mutation(async ({ input }) => {
|
|
const area = await db.insert(addressAreas).values({ placeName: input.placeName, zoneId: input.zoneId }).returning();
|
|
return {area};
|
|
}),
|
|
|
|
// TODO: Add update and delete mutations if needed
|
|
});
|
|
|
|
export default addressRouter; |