N
Neon12mo ago
sunny-green

Quick compute hours question :)

I'm simply using SvelteKit to deploy a vercel serverless app that uses the below standard code and I noticed my compute hours are nearly maxed out even tho im still just developing my app by myself.. Will my neon database start up everytime my app loads, and I import db in a used file, even if I conditionally don't query it? If so is there a way to prevent this? Thank you!!
neonConfig.webSocketConstructor = ws

export const pool: any = new Pool({ connectionString: process.env.DATABASE_URL })
pool.on('error', (err: any) => console.error(err))

export const db = drizzle(pool, { logger: false, schema: { userTable, sessionTable } })

export default db
neonConfig.webSocketConstructor = ws

export const pool: any = new Pool({ connectionString: process.env.DATABASE_URL })
pool.on('error', (err: any) => console.error(err))

export const db = drizzle(pool, { logger: false, schema: { userTable, sessionTable } })

export default db
1 Reply
sunny-green
sunny-greenOP12mo ago
Figured it out thanks to Claude finally, very tricky...
neonConfig.webSocketConstructor = ws

let dbInstance: NodePgDatabase | null = null

function initializeDb() {
if (!dbInstance) {
const pool = new Pool({ connectionString: process.env.DATABASE_URL })
pool.on('error', (err) => console.error(err))

dbInstance = drizzle(pool, { logger: false, schema: { userTable, sessionTable } })
}
return dbInstance
}

// Create a properly typed proxy
const db = new Proxy({} as NodePgDatabase, {
get(target, prop) {
const instance = initializeDb()
return instance[prop]
}
})

export default db
neonConfig.webSocketConstructor = ws

let dbInstance: NodePgDatabase | null = null

function initializeDb() {
if (!dbInstance) {
const pool = new Pool({ connectionString: process.env.DATABASE_URL })
pool.on('error', (err) => console.error(err))

dbInstance = drizzle(pool, { logger: false, schema: { userTable, sessionTable } })
}
return dbInstance
}

// Create a properly typed proxy
const db = new Proxy({} as NodePgDatabase, {
get(target, prop) {
const instance = initializeDb()
return instance[prop]
}
})

export default db

Did you find this page helpful?