findyourpilot/src/lib/server/places.ts

45 lines
1.1 KiB
TypeScript

import { createServerFn } from "@tanstack/react-start"
import { eq } from "drizzle-orm"
import { db } from "@/integrations/drizzle"
import { places as placesSchema } from "@/integrations/drizzle/db/schema"
import { paginatedPlacesSchema, placeSchema } from "../validation/places"
export const insertUserPlace = createServerFn()
.inputValidator(placeSchema)
.handler(async ({ data }) => {
await db.insert(placesSchema).values(data).returning()
})
export const editUserPlace = createServerFn()
.inputValidator(
placeSchema.pick({
hidden_place: true,
name: true,
description: true,
id_user: true
})
)
.handler(async ({ data }) => {
await db
.update(placesSchema)
.set(data)
.where(eq(placesSchema.id_user, data.id_user))
})
export const getUserPlacesById = createServerFn()
.inputValidator(paginatedPlacesSchema)
.handler(async ({ data }) => {
return await db
.select()
.from(placesSchema)
.where(eq(placesSchema.id_user, data.id_user))
.limit(data.limit)
.offset((data.page - 1) * data.limit)
})
export const places = {
insertUserPlace,
editUserPlace,
getUserPlacesById
}