refactor: remove edge compatibility
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import type { FetchCreateContextFnOptions } from "@trpc/server/adapters/fetch";
|
||||
import type { CreateNextContextOptions } from "@trpc/server/adapters/next";
|
||||
import type { NextRequest } from "next/server";
|
||||
import type { NextApiRequest } from "next";
|
||||
import type { OpenApiMeta } from "trpc-to-openapi";
|
||||
import { initTRPC, TRPCError } from "@trpc/server";
|
||||
import superjson from "superjson";
|
||||
@@ -33,25 +32,25 @@ export const createInnerTRPCContext = (opts: CreateContextOptions) => {
|
||||
};
|
||||
};
|
||||
|
||||
export const createTRPCContext = async ({
|
||||
req,
|
||||
}: FetchCreateContextFnOptions) => {
|
||||
export const createTRPCContext = async ({ req }: CreateNextContextOptions) => {
|
||||
const db = createDrizzleClient();
|
||||
const auth = initAuth(db);
|
||||
|
||||
const session = await auth.api.getSession({
|
||||
headers: req.headers,
|
||||
// @ts-expect-error
|
||||
headers: new Headers(req.headers),
|
||||
});
|
||||
|
||||
return createInnerTRPCContext({ db, user: session?.user });
|
||||
};
|
||||
|
||||
export const createNextApiContext = async (req: NextRequest) => {
|
||||
export const createNextApiContext = async (req: NextApiRequest) => {
|
||||
const db = createDrizzleClient();
|
||||
const auth = initAuth(db);
|
||||
|
||||
const session = await auth.api.getSession({
|
||||
headers: req.headers,
|
||||
// @ts-expect-error
|
||||
headers: new Headers(req.headers),
|
||||
});
|
||||
|
||||
return createInnerTRPCContext({ db, user: session?.user });
|
||||
|
||||
@@ -39,16 +39,16 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@kan/shared": "workspace:^",
|
||||
"@neondatabase/serverless": "^0.10.4",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
"drizzle-orm": "^0.42.0",
|
||||
"drizzle-zod": "^0.5.1",
|
||||
"pg": "^8.11.3",
|
||||
"zod": "catalog:"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@kan/eslint-config": "workspace:*",
|
||||
"@kan/prettier-config": "workspace:*",
|
||||
"@kan/tsconfig": "workspace:*",
|
||||
"@types/pg": "^8.10.9",
|
||||
"dotenv-cli": "^7.4.4",
|
||||
"drizzle-kit": "^0.28.1",
|
||||
"eslint": "catalog:",
|
||||
|
||||
@@ -1,20 +1,23 @@
|
||||
import type { NeonDatabase as DrizzleClient } from "drizzle-orm/neon-serverless";
|
||||
import { Pool } from "@neondatabase/serverless";
|
||||
import { drizzle } from "drizzle-orm/neon-serverless";
|
||||
import type { NodePgDatabase } from "drizzle-orm/node-postgres";
|
||||
import { drizzle as drizzlePg } from "drizzle-orm/node-postgres";
|
||||
import { Pool } from "pg";
|
||||
|
||||
import * as schema from "./schema";
|
||||
|
||||
export type dbClient = DrizzleClient<typeof schema> & {
|
||||
export type dbClient = NodePgDatabase<typeof schema> & {
|
||||
$client: Pool;
|
||||
};
|
||||
|
||||
export const createDrizzleClient = () => {
|
||||
export const createDrizzleClient = (): dbClient => {
|
||||
const connectionString = process.env.POSTGRES_URL;
|
||||
|
||||
if (!connectionString) {
|
||||
throw new Error("POSTGRES_URL environment variable is not set");
|
||||
}
|
||||
|
||||
const pool = new Pool({
|
||||
connectionString: process.env.POSTGRES_URL,
|
||||
connectionString,
|
||||
});
|
||||
|
||||
return drizzle({
|
||||
client: pool,
|
||||
schema,
|
||||
});
|
||||
return drizzlePg(pool, { schema }) as dbClient;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user