TanStack / TanStack/tanstack.com
Eager DB client initialization makes the DB required to preview the docs
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 1.1k
- Forks
- 401
- Merge moyen
- 18 h 14 min
- PR mergées (30 j)
- 56
Description
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? 🤔
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par les lignes 5-21 de src/db/client.ts et reproduisez une compilation ou un aperçu de la documentation sans DATABASE_URL. Identifiez les chemins de documentation qui initialisent le client et comparez-les à ceux qui nécessitent réellement un accès à la base de données. Le travail est terminé lorsque la documentation peut être compilée et prévisualisée sans base de données, tandis que le comportement s'appuyant sur la base de données continue de fonctionner lorsqu'il est configuré.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- postgresql, typescript
- Domaine
- build-system, database, documentation
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100