TanStack / TanStack/tanstack.com
Eager DB client initialization makes the DB required to preview the docs
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 1.1k
- Fork
- 401
- Merge medio
- 18h 14m
- PR unite (30g)
- 56
Descrizione
If there is no DB connection set, the build will fail. On docs only contributions, it is annoying.
As a workaround, I'm doing this:
function lazyObject<T extends object>(factory: () => T): T {
let value: T | undefined = undefined
return new Proxy({} as T, {
get(_, prop) {
if (!value) value = factory()
return value[prop as keyof T]
},
}) as T
}
export const db = lazyObject(() => {
// Create the connection string from environment variable
const connectionString = process.env.DATABASE_URL
if (!connectionString) {
throw new Error('DATABASE_URL environment variable is not set')
}
// Create postgres client
// For serverless environments, use connection pooling
const client = postgres(connectionString, {
max: 1, // For serverless, limit connections
idle_timeout: 20,
connect_timeout: 10,
})
// Create drizzle instance with schema
return drizzle(client, { schema })
})
Is that ok for a workaround for a PR, or is there a better pattern or approach? Passing it though the backend context? Or maybe a React's cache like API in start? 🤔
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dalle righe 5-21 di src/db/client.ts e riproduci una build o un'anteprima della documentazione senza DATABASE_URL. Traccia quali percorsi della documentazione inizializzano il client e confrontali con i percorsi che richiedono effettivamente l'accesso al database. Il lavoro è completo quando la documentazione può essere compilata e visualizzata in anteprima senza un database, mentre il comportamento basato sul database continua a funzionare quando configurato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- postgresql, typescript
- Ambito
- build-system, database, documentation
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100