refactor: remove edge compatibility

This commit is contained in:
Henry
2025-05-15 22:27:03 +01:00
parent 66de4b6c42
commit d065ae73e1
11 changed files with 108 additions and 167 deletions

View File

@@ -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 });

View File

@@ -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:",

View File

@@ -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;
};