diff --git a/src/lib/hooks/user/useLogin.tsx b/src/lib/hooks/user/useLogin.tsx index fc53b58..2e84b5b 100644 --- a/src/lib/hooks/user/useLogin.tsx +++ b/src/lib/hooks/user/useLogin.tsx @@ -17,7 +17,6 @@ export const useLogin = () => { mutationKey: ["login"], mutationFn: async (data: TLoginForm) => { const response = await user.login({ data }) - if (response.error) { throw new Error(response.message) } diff --git a/src/lib/server/places.ts b/src/lib/server/places.ts index 31d9558..fed4a99 100644 --- a/src/lib/server/places.ts +++ b/src/lib/server/places.ts @@ -1,17 +1,48 @@ import { createServerFn } from "@tanstack/react-start" import { eq } from "drizzle-orm" import { db } from "@/integrations/drizzle" -import { places } from "@/integrations/drizzle/db/schema" +import { places as placesSchema } from "@/integrations/drizzle/db/schema" +import { paginatedPlacesSchema, placeSchema } from "../validation/places" export const insertUserPlace = createServerFn({ method: "POST" -}).handler(async ({ data }) => { - await db.insert(places).values(data).returning() }) + .inputValidator(placeSchema) + .handler(async ({ data }) => { + await db.insert(placesSchema).values(data).returning() + }) -export const getUserPlaces = createServerFn().handler(async () => { - return await db - .select() - .from(places) - .where(eq(places.id_user, "e6472b9d-01a9-4e2e-8bdc-0ddaa9baf5d8")) // No haría falta el where puedo filtrar mediante RSL que solo pueda ver sus places solo los datos que el ha insertado +export const editUserPlace = createServerFn({ + method: "POST" }) + .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 +} diff --git a/src/lib/server/user.ts b/src/lib/server/user.ts index 261f86a..3a56abd 100644 --- a/src/lib/server/user.ts +++ b/src/lib/server/user.ts @@ -82,7 +82,6 @@ const userData = createServerFn().handler(async () => { message: error?.message ?? "Unknown error" } } - console.log(data) return { user: { id: data.user.id, diff --git a/src/lib/validation/places.ts b/src/lib/validation/places.ts new file mode 100644 index 0000000..44572f4 --- /dev/null +++ b/src/lib/validation/places.ts @@ -0,0 +1,18 @@ +import z from "zod" + +export const placeSchema = z.object({ + name: z.string(), + description: z.string(), + coord_x: z.string(), + coord_y: z.string(), + id_user: z.string(), + hidden_place: z.boolean() +}) + +export const paginatedPlacesSchema = z.object({ + page: z.number(), + limit: z.number(), + id_user: z.string(), +}) + + diff --git a/src/routes/_authed.tsx b/src/routes/_authed.tsx index 799f414..79f1bc8 100644 --- a/src/routes/_authed.tsx +++ b/src/routes/_authed.tsx @@ -14,11 +14,6 @@ export const Route = createFileRoute("/_authed")({ // TODO: Redirect to login page } }, - loader: ({ context }) => { - context.queryClient.ensureQueryData({ - queryKey: ["profile"] - }) - }, errorComponent: ({ error }) => { if (error.message === "Not authenticated") { return ( @@ -38,8 +33,6 @@ function RouteComponent() {