Turso & Astro
Turso é um banco de dados distribuído construído com libSQL, um fork do SQLite. Ele é otimizado para baixa latência de consulta, tornando-o adequado para aplicações globais.
Inicializando o Turso no Astro
Seção intitulada Inicializando o Turso no AstroPré-requisitos
Seção intitulada Pré-requisitos- CLI Turso instalada e autenticada
- Um banco de dados com esquema Turso
- A URL do seu banco de dados
- Um token de acesso
Configurar variáveis de ambiente
Seção intitulada Configurar variáveis de ambienteObtenha a URL do seu banco de dados usando o seguinte comando:
turso db show <database-name> --urlCrie um token de autenticação para o banco de dados:
turso db tokens create <database-name>Adicione a saída de ambos os comandos acima em seu arquivo .env na raiz do projeto. Se esse arquivo não existir, crie um.
TURSO_DATABASE_URL=libsql://...TURSO_AUTH_TOKEN=Não use o prefixo PUBLIC_ ao criar estas variáveis de ambiente privadas. Isso irá expor esses valores para o cliente.
Instalar o cliente LibSQL
Seção intitulada Instalar o cliente LibSQLInstale o @libsql/client para conectar Turso ao Astro:
npm install @libsql/clientpnpm add @libsql/clientyarn add @libsql/clientInicializar um novo cliente
Seção intitulada Inicializar um novo clienteCrie um arquivo turso.ts na pasta src e invoque createClient, passando TURSO_DATABASE_URL e TURSO_AUTH_TOKEN:
import { createClient } from "@libsql/client/web";
export const turso = createClient({ url: import.meta.env.TURSO_DATABASE_URL, authToken: import.meta.env.TURSO_AUTH_TOKEN,});Consultando seu banco de dados
Seção intitulada Consultando seu banco de dadosPara acessar informações do seu banco de dados, importe turso e execute uma consulta SQL dentro de qualquer componente .astro.
O exemplo a seguir busca todos os posts da sua tabela e exibe uma lista de títulos em um componente <BlogIndex />:
---import { turso } from '../turso'
const { rows } = await turso.execute('SELECT * FROM posts')---
<ul> {rows.map((post) => ( <li>{post.title}</li> ))}</ul>Placeholders SQL
Seção intitulada Placeholders SQLO método execute() pode aceitar um objeto para passar variáveis para a declaração SQL, como slug ou paginação.
O exemplo a seguir busca uma única entrada na tabela posts onde (WHERE) o slug é o valor obtido de Astro.params, e então exibe o título da postagem.
---import { turso } from '../turso'
const { slug } = Astro.params
const { rows } = await turso.execute({ sql: 'SELECT * FROM posts WHERE slug = ?', args: [slug!]})---
<h1>{rows[0].title}</h1>Recursos Turso
Seção intitulada Recursos Turso- Documentação Turso
- Turso no GitHub
- Usando Turso para servir o conteúdo de um blog Astro renderizado no lado do servidor