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> --url
Crie 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/client
pnpm add @libsql/client
yarn add @libsql/client
Inicializar 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