diff --git a/bun.lock b/bun.lock index 56c40ac..d04681d 100644 --- a/bun.lock +++ b/bun.lock @@ -15,7 +15,6 @@ "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@headlessui/react": "^2.2.0", - "@neondatabase/serverless": "^1.0.2", "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-checkbox": "^1.1.1", "@radix-ui/react-collapsible": "^1.1.2", diff --git a/drizzle/types.ts b/drizzle/types.ts index 0a76522..e00a788 100644 --- a/drizzle/types.ts +++ b/drizzle/types.ts @@ -1,5 +1,5 @@ import type { InferSelectModel } from "drizzle-orm"; -import type { NeonHttpDatabase } from "drizzle-orm/neon-http"; +import type { NodePgDatabase } from "drizzle-orm/node-postgres"; import type * as dbSchema from "./schema"; import type { activity, @@ -12,7 +12,7 @@ import type { user, } from "./schema"; -export type Database = NeonHttpDatabase; +export type Database = NodePgDatabase; export type User = InferSelectModel; export type Project = InferSelectModel; diff --git a/lib/utils/useDatabase.ts b/lib/utils/useDatabase.ts index 2aa0e23..a36f675 100644 --- a/lib/utils/useDatabase.ts +++ b/lib/utils/useDatabase.ts @@ -1,7 +1,6 @@ -import { neon } from "@neondatabase/serverless"; import { sql } from "drizzle-orm"; import { upstashCache } from "drizzle-orm/cache/upstash"; -import { drizzle } from "drizzle-orm/neon-http"; +import { drizzle } from "drizzle-orm/node-postgres"; import { err, ok, type Result } from "neverthrow"; import { cache } from "react"; import type { Database } from "@/drizzle/types"; @@ -33,10 +32,8 @@ export async function getDatabaseForOwner(ownerId: string): Promise { ); const sslMode = process.env.DATABASE_SSL === "true" ? "?sslmode=require" : ""; - const client = neon(`${process.env.DATABASE_URL}/${databaseName}${sslMode}`); - return drizzle({ - client, + return drizzle(`${process.env.DATABASE_URL}/${databaseName}${sslMode}`, { cache: upstashCache({ url: process.env.UPSTASH_REDIS_REST_URL!, token: process.env.UPSTASH_REDIS_REST_TOKEN!, @@ -55,8 +52,10 @@ export async function deleteDatabase(ownerId: string) { ); const sslMode = process.env.DATABASE_SSL === "true" ? "?sslmode=require" : ""; - const client = neon(`${process.env.DATABASE_URL}/manage${sslMode}`); - const ownerDb = drizzle({ client, schema }); + + const ownerDb = drizzle(`${process.env.DATABASE_URL}/manage${sslMode}`, { + schema, + }); // Terminate all connections to the database before dropping await ownerDb.execute(sql` diff --git a/ops/drizzle/types.ts b/ops/drizzle/types.ts index 3c8826c..d937224 100644 --- a/ops/drizzle/types.ts +++ b/ops/drizzle/types.ts @@ -1,4 +1,4 @@ -import type { NeonHttpDatabase } from "drizzle-orm/neon-http"; +import type { NodePgDatabase } from "drizzle-orm/node-postgres"; import type * as dbSchema from "./schema"; -export type OpsDatabase = NeonHttpDatabase; +export type OpsDatabase = NodePgDatabase; diff --git a/ops/useOps.ts b/ops/useOps.ts index 46b6162..bd56e88 100644 --- a/ops/useOps.ts +++ b/ops/useOps.ts @@ -1,13 +1,11 @@ import type { UserJSON } from "@clerk/nextjs/server"; -import { neon } from "@neondatabase/serverless"; -import { drizzle } from "drizzle-orm/neon-http"; +import { drizzle } from "drizzle-orm/node-postgres"; import * as schema from "./drizzle/schema"; import type { OpsDatabase } from "./drizzle/types"; export async function getOpsDatabase(): Promise { const sslMode = process.env.DATABASE_SSL === "true" ? "?sslmode=require" : ""; - const client = neon(`${process.env.DATABASE_URL}/manage${sslMode}`); - return drizzle({ client, schema }); + return drizzle(`${process.env.DATABASE_URL}/manage${sslMode}`, { schema }); } export async function addUserToOpsDb(userData: UserJSON) { diff --git a/package.json b/package.json index 9197eb6..f046623 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@headlessui/react": "^2.2.0", - "@neondatabase/serverless": "^1.0.2", "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-checkbox": "^1.1.1", "@radix-ui/react-collapsible": "^1.1.2",