diff --git a/infra/database.ts b/infra/database.ts index e758ab42..8a96287a 100644 --- a/infra/database.ts +++ b/infra/database.ts @@ -1,27 +1,29 @@ //Created manually from the dashboard and shared with the whole team/org const dbProject = neon.getProjectOutput({ - id:"red-mud-17843368" + id: "little-band-76544985", }) const dbBranchId = $app.stage !== "production" ? - new neon.Branch("DatabaseBranch", { + new neon.Branch("NeonBranch", { parentId: dbProject.defaultBranchId, projectId: dbProject.id, name: $app.stage, }).id : dbProject.defaultBranchId -const dbEndpoint = new neon.Endpoint("NestriEndpoint", { +const dbEndpoint = new neon.Endpoint("NeonEndpoint", { projectId: dbProject.id, - branchId: dbBranchId + branchId: dbBranchId, + poolerEnabled: true, + type: "read_write", }) -const dbRole = new neon.Role("AdminRole", { +const dbRole = new neon.Role("NeonRole", { name: "admin", branchId: dbBranchId, projectId: dbProject.id, }) -const db = new neon.Database("NestriDatabase", { +const db = new neon.Database("NeonDatabase", { branchId: dbBranchId, projectId: dbProject.id, ownerName: dbRole.name, diff --git a/packages/core/drizzle.config.ts b/packages/core/drizzle.config.ts index 98e3f64a..efff367e 100644 --- a/packages/core/drizzle.config.ts +++ b/packages/core/drizzle.config.ts @@ -1,12 +1,20 @@ import { Resource } from "sst"; import { defineConfig } from "drizzle-kit"; +function addPoolerSuffix(original: string): string { + const firstDotIndex = original.indexOf('.'); + if (firstDotIndex === -1) return original + '-pooler'; + return original.slice(0, firstDotIndex) + '-pooler' + original.slice(firstDotIndex); + } + +const dbHost = addPoolerSuffix(Resource.Database.host) + export default defineConfig({ schema: "./src/**/*.sql.ts", out: "./migrations", dialect: "postgresql", verbose: true, dbCredentials: { - url: `postgresql://${Resource.Database.user}:${Resource.Database.password}@${Resource.Database.host}/${Resource.Database.name}?sslmode=require`, + url: `postgresql://${Resource.Database.user}:${Resource.Database.password}@${dbHost}/${Resource.Database.name}?sslmode=require`, }, }); \ No newline at end of file diff --git a/packages/core/src/drizzle/index.ts b/packages/core/src/drizzle/index.ts index 47d0e4d1..32d53ff2 100644 --- a/packages/core/src/drizzle/index.ts +++ b/packages/core/src/drizzle/index.ts @@ -7,7 +7,15 @@ import { Pool, neonConfig } from "@neondatabase/serverless"; neonConfig.webSocketConstructor = ws; -const client = new Pool({ connectionString: `postgres://${Resource.Database.user}:${Resource.Database.password}@${Resource.Database.host}/${Resource.Database.name}?sslmode=require` }) +function addPoolerSuffix(original: string): string { + const firstDotIndex = original.indexOf('.'); + if (firstDotIndex === -1) return original + '-pooler'; + return original.slice(0, firstDotIndex) + '-pooler' + original.slice(firstDotIndex); + } + +const dbHost = addPoolerSuffix(Resource.Database.host) + +const client = new Pool({ connectionString: `postgres://${Resource.Database.user}:${Resource.Database.password}@${dbHost}/${Resource.Database.name}?sslmode=require` }) export const db = neonDrizzle(client, { logger: diff --git a/packages/functions/src/auth.ts b/packages/functions/src/auth.ts index 41db11cf..513800e0 100644 --- a/packages/functions/src/auth.ts +++ b/packages/functions/src/auth.ts @@ -64,12 +64,12 @@ const app = issuer({ PasswordUI({ sendCode: async (email, code) => { console.log("email & code:", email, code) - await Email.send( - "auth", - email, - `Nestri code: ${code}`, - `Your Nestri login code is ${code}`, - ) + // await Email.send( + // "auth", + // email, + // `Nestri code: ${code}`, + // `Your Nestri login code is ${code}`, + // ) }, }), ),