diff --git a/apps/backend/.env.example b/apps/backend/.env.example new file mode 100644 index 0000000..d105a17 --- /dev/null +++ b/apps/backend/.env.example @@ -0,0 +1,15 @@ +ELASTICSEARCH_NODE=http://localhost:9200 +ELASTICSEARCH_USER=elastic +ELASTICSEARCH_PASSWORD=changeme +MINIO_ENDPOINT=localhost +MINIO_PORT=9000 +MINIO_USE_SSL=false +MINIO_ACCESS_KEY=minioadmin +MINIO_SECRET_KEY=minioadmin +REDIS_PASSWORD=nice + + +# OIDC_COOKIE_KEY= +OIDC_CLIENT_ID=your-client-id +OIDC_CLIENT_SECRET=your-client-secret +OIDC_REDIRECT_URI=https://your-frontend.com/callback \ No newline at end of file diff --git a/apps/backend/src/index.ts b/apps/backend/src/index.ts index 3550582..b9374a6 100644 --- a/apps/backend/src/index.ts +++ b/apps/backend/src/index.ts @@ -2,14 +2,16 @@ import { Hono } from 'hono' import { logger } from 'hono/logger' import { contextStorage, getContext } from 'hono/context-storage' import { prettyJSON } from 'hono/pretty-json' +import { cors } from 'hono/cors' import { trpcServer } from '@hono/trpc-server' -import { appRouter } from './trpc' + import Redis from 'ioredis' import redis from './redis' import minioClient from './minio' import { Client } from 'minio' import oidc from './oidc/provider' +import { appRouter } from './trpc' type Env = { Variables: { redis: Redis @@ -19,6 +21,11 @@ type Env = { const app = new Hono() +app.use('*', cors({ + origin: 'http://localhost:3001', + credentials: true, +})) + app.use('*', async (c, next) => { c.set('redis', redis) c.set('minio', minioClient) @@ -38,9 +45,6 @@ app.use( }) ) -app.get('/', (c) => { - return c.text('Hello Hono!') -}) app.use('/oidc/*', async (c, next) => { // @ts-ignore await oidc.callback(c.req.raw, c.res.raw) diff --git a/apps/backend/src/trpc.ts b/apps/backend/src/trpc.ts deleted file mode 100644 index 9e751a2..0000000 --- a/apps/backend/src/trpc.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { z } from 'zod' -import { initTRPC } from '@trpc/server' -import { userRouter } from './user/user.trpc' - -const t = initTRPC.create() - -export const publicProcedure = t.procedure -export const router = t.router - -export const appRouter = router({ - user: userRouter -}) - -export type AppRouter = typeof appRouter \ No newline at end of file diff --git a/apps/backend/src/trpc/base.ts b/apps/backend/src/trpc/base.ts new file mode 100644 index 0000000..ba4018c --- /dev/null +++ b/apps/backend/src/trpc/base.ts @@ -0,0 +1,6 @@ +import { initTRPC } from '@trpc/server' +const t = initTRPC.create() + +export const publicProcedure = t.procedure +export const router = t.router + diff --git a/apps/backend/src/trpc/index.ts b/apps/backend/src/trpc/index.ts new file mode 100644 index 0000000..4bb113d --- /dev/null +++ b/apps/backend/src/trpc/index.ts @@ -0,0 +1,8 @@ +import { userRouter } from "../user/user.trpc" +import { router } from "./base" + +export const appRouter = router({ + user: userRouter +}) + +export type AppRouter = typeof appRouter \ No newline at end of file diff --git a/apps/backend/src/user/user.trpc.ts b/apps/backend/src/user/user.trpc.ts index 5f97733..4c2dcbd 100644 --- a/apps/backend/src/user/user.trpc.ts +++ b/apps/backend/src/user/user.trpc.ts @@ -1,7 +1,8 @@ -import { publicProcedure, router } from "../trpc"; -import { prisma } from "@repo/db"; +import { publicProcedure, router } from "../trpc/base" + export const userRouter = router({ getUser: publicProcedure.query(async ({ ctx }) => { - return prisma.user.findMany() + + return '123' }) }) \ No newline at end of file diff --git a/apps/web/.env.example b/apps/web/.env.example new file mode 100644 index 0000000..8183f56 --- /dev/null +++ b/apps/web/.env.example @@ -0,0 +1 @@ +DATABASE_URL="postgresql://root:Letusdoit000@localhost:5432/app?schema=public" \ No newline at end of file diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index fc2a978..bee2a45 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -1,20 +1,8 @@ -import { Geist, Geist_Mono } from 'next/font/google'; - import '@repo/ui/globals.css'; import { Providers } from '@/components/providers'; import type { Metadata } from 'next'; -const fontSans = Geist({ - subsets: ['latin'], - variable: '--font-sans', -}); - -const fontMono = Geist_Mono({ - subsets: ['latin'], - variable: '--font-mono', -}); - export const metadata: Metadata = { title: 'Create Next App', description: 'Generated by create next app', @@ -27,7 +15,7 @@ export default function RootLayout({ }>) { return ( - + {children} diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index ad497f7..b84d4dc 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -1,6 +1,10 @@ -export default async function Home() { - - return
- 123 -
; +'use client'; +import { useTRPC } from '@repo/client'; +import { useQuery } from '@tanstack/react-query'; + +export default function Home() { + const trpc = useTRPC(); + const userQuery = useQuery(trpc.user.getUser.queryOptions()); + console.log(userQuery.data); + return
123
; } diff --git a/apps/web/components/providers.tsx b/apps/web/components/providers.tsx index 49ecbf4..e112edb 100644 --- a/apps/web/components/providers.tsx +++ b/apps/web/components/providers.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import { ThemeProvider as NextThemesProvider } from 'next-themes'; +import QueryProvider from '@/providers/query-provider'; export function Providers({ children }: { children: React.ReactNode }) { return ( @@ -12,7 +13,7 @@ export function Providers({ children }: { children: React.ReactNode }) { disableTransitionOnChange enableColorScheme > - {children} + {children} ); } diff --git a/apps/web/providers/query-provider.tsx b/apps/web/providers/query-provider.tsx index 9f0f2c1..7508a2c 100644 --- a/apps/web/providers/query-provider.tsx +++ b/apps/web/providers/query-provider.tsx @@ -3,7 +3,7 @@ import { loggerLink, httpBatchLink, createTRPCClient } from '@trpc/client'; import { TRPCProvider } from '@repo/client'; import { useMemo, useState } from 'react'; import superjson from 'superjson'; -import { AppRouter } from '@repo/backend/trpc'; +import { AppRouter } from '@repo/backend/trpc/index'; export default function QueryProvider({ children }) { // 将accessToken设置为空字符串 diff --git a/packages/client/package.json b/packages/client/package.json index 475b633..165800c 100755 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -9,13 +9,6 @@ "dist", "src" ], - "scripts": { - "build": "tsup", - "dev": "tsup --watch", - "dev-static": "tsup --no-watch", - "clean": "rimraf dist", - "typecheck": "tsc --noEmit" - }, "dependencies": { }, @@ -30,7 +23,6 @@ "axios": "^1.7.2", "dayjs": "^1.11.12", "react": "^19.1.0" - }, "devDependencies": { "rimraf": "^6.0.1", diff --git a/packages/client/src/api/trpc.ts b/packages/client/src/api/trpc.ts index e4b46f0..0c9eb70 100755 --- a/packages/client/src/api/trpc.ts +++ b/packages/client/src/api/trpc.ts @@ -1,8 +1,8 @@ -import { AppRouter } from "@repo/backend/trpc" +import { AppRouter } from "@repo/backend/trpc/index" import { inferReactQueryProcedureOptions } from "@trpc/react-query"; import { inferRouterInputs, inferRouterOutputs } from "@trpc/server"; import { createTRPCContext } from '@trpc/tanstack-react-query'; export type ReactQueryOptions = inferReactQueryProcedureOptions; export type RouterInputs = inferRouterInputs; export type RouterOutputs = inferRouterOutputs; -export const { TRPCProvider, useTRPC, useTRPCClient } = createTRPCContext(); \ No newline at end of file +export const { TRPCProvider, useTRPC, useTRPCClient } = createTRPCContext(); diff --git a/packages/client/src/api/utils.ts b/packages/client/src/api/utils.ts index 346969d..28c133b 100755 --- a/packages/client/src/api/utils.ts +++ b/packages/client/src/api/utils.ts @@ -1,5 +1,6 @@ import { QueryClient } from "@tanstack/react-query"; import { getQueryKey } from "@trpc/react-query"; +import { useTRPC } from "./trpc"; /** * 根据查询客户端缓存生成唯一数据列表的函数。