Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Eager DB client initialization makes the DB required to preview the docs

Aberta
#590 1 comentário 3 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
postgresql, typescript

Direção de pesquisa

Comece pelas linhas 5-21 de src/db/client.ts e reproduza um build ou uma prévia da documentação sem DATABASE_URL. Rastreie quais caminhos da documentação inicializam o cliente e compare-os com os caminhos que realmente precisam de acesso ao banco de dados. O trabalho estará concluído quando a documentação puder ser compilada e visualizada em prévia sem um banco de dados, enquanto o comportamento baseado em banco de dados continuar funcionando quando configurado.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

https://github.com/TanStack/tanstack.com/blob/b5379db43a8112a5e929260e992099b58f61734a/src/db/client.ts#L5-L21

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? 🤔

Linguagem predominante
TypeScript
Estrelas
1.1k
Forks
401
Merge médio
18h 44min
PRs com merge (30d)
55

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de TanStack/tanstack.com

Todas as issues de TanStack/tanstack.com

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.