diff --git a/src/lib/server/places.ts b/src/lib/server/places.ts new file mode 100644 index 0000000..acb315f --- /dev/null +++ b/src/lib/server/places.ts @@ -0,0 +1,14 @@ +import { createServerFn } from "@tanstack/react-start" +import { eq } from "drizzle-orm" +import { db } from "@/integrations/drizzle" +import { places } from "@/integrations/drizzle/db/schema" + +export const insertUserPlace = createServerFn({ + method: "POST" +}).handler(async ({ data }) => { + await db.insert(places).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 +}) \ No newline at end of file diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts index 92d4cf9..caa46d6 100644 --- a/src/routeTree.gen.ts +++ b/src/routeTree.gen.ts @@ -10,6 +10,7 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as SignupRouteImport } from './routes/signup' +import { Route as PlacesRouteImport } from './routes/places' import { Route as LogoutRouteImport } from './routes/logout' import { Route as LoginRouteImport } from './routes/login' import { Route as AuthedRouteImport } from './routes/_authed' @@ -21,6 +22,11 @@ const SignupRoute = SignupRouteImport.update({ path: '/signup', getParentRoute: () => rootRouteImport, } as any) +const PlacesRoute = PlacesRouteImport.update({ + id: '/places', + path: '/places', + getParentRoute: () => rootRouteImport, +} as any) const LogoutRoute = LogoutRouteImport.update({ id: '/logout', path: '/logout', @@ -50,6 +56,7 @@ export interface FileRoutesByFullPath { '/': typeof IndexRoute '/login': typeof LoginRoute '/logout': typeof LogoutRoute + '/places': typeof PlacesRoute '/signup': typeof SignupRoute '/dashboard': typeof AuthedDashboardRoute } @@ -57,6 +64,7 @@ export interface FileRoutesByTo { '/': typeof IndexRoute '/login': typeof LoginRoute '/logout': typeof LogoutRoute + '/places': typeof PlacesRoute '/signup': typeof SignupRoute '/dashboard': typeof AuthedDashboardRoute } @@ -66,20 +74,22 @@ export interface FileRoutesById { '/_authed': typeof AuthedRouteWithChildren '/login': typeof LoginRoute '/logout': typeof LogoutRoute + '/places': typeof PlacesRoute '/signup': typeof SignupRoute '/_authed/dashboard': typeof AuthedDashboardRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' | '/login' | '/logout' | '/signup' | '/dashboard' + fullPaths: '/' | '/login' | '/logout' | '/places' | '/signup' | '/dashboard' fileRoutesByTo: FileRoutesByTo - to: '/' | '/login' | '/logout' | '/signup' | '/dashboard' + to: '/' | '/login' | '/logout' | '/places' | '/signup' | '/dashboard' id: | '__root__' | '/' | '/_authed' | '/login' | '/logout' + | '/places' | '/signup' | '/_authed/dashboard' fileRoutesById: FileRoutesById @@ -89,6 +99,7 @@ export interface RootRouteChildren { AuthedRoute: typeof AuthedRouteWithChildren LoginRoute: typeof LoginRoute LogoutRoute: typeof LogoutRoute + PlacesRoute: typeof PlacesRoute SignupRoute: typeof SignupRoute } @@ -101,6 +112,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof SignupRouteImport parentRoute: typeof rootRouteImport } + '/places': { + id: '/places' + path: '/places' + fullPath: '/places' + preLoaderRoute: typeof PlacesRouteImport + parentRoute: typeof rootRouteImport + } '/logout': { id: '/logout' path: '/logout' @@ -155,6 +173,7 @@ const rootRouteChildren: RootRouteChildren = { AuthedRoute: AuthedRouteWithChildren, LoginRoute: LoginRoute, LogoutRoute: LogoutRoute, + PlacesRoute: PlacesRoute, SignupRoute: SignupRoute, } export const routeTree = rootRouteImport diff --git a/src/routes/_authed/dashboard.tsx b/src/routes/_authed/dashboard.tsx index d9af045..e4e65e9 100644 --- a/src/routes/_authed/dashboard.tsx +++ b/src/routes/_authed/dashboard.tsx @@ -80,7 +80,6 @@ function RouteComponent() {

Ver más

- {/* === Tarjeta 3: Ofertas de vuelo === */}

- Ofertas de vuelo + Certificados

-

- Explora y gestiona tus ofertas de vuelo activas. -

+

{ + await insertUserPlace({ + data: { + name: "Place 1", + description: "A nice place", + coord_x: "40.7128", + coord_y: "-74.0060", + id_user: "e6472b9d-01a9-4e2e-8bdc-0ddaa9baf5d8", // Replace with actual user ID + hidden_place: false + } + }) + } + + const fetchPlaces = async () => { + const places = await getUserPlaces(); + console.log(places); + } + + return ( +
+ +
+ ) +}