Turso & Astro
Turso è un database basato su libSQL, una fork di SQLite. È ottimizzato per query a bassa latenza, rendendolo adatto ad applicazioni globali.
Inizializzare Turso in Astro
Sezione intitolata Inizializzare Turso in AstroPrerequisiti
Sezione intitolata Prerequisiti- La Turso CLI installata, con accesso eseguito
- Un Database Turso con uno schema
- L’URL del tuo Database
- Un token di accesso
Configura le variabili di ambiente
Sezione intitolata Configura le variabili di ambienteOttieni l’URL del tuo database usando il comando seguente:
turso db show <database-name> --urlCrea un token di autorizzazione per il database:
turso db tokens create <database-name>Aggiungi l’output dei due comandi nel tuo file .env nella cartella root del tuo progetto. Se il file non esiste, crealo.
TURSO_DATABASE_URL=libsql://...TURSO_AUTH_TOKEN=Non usare il prefisso PUBLIC_ quando crei queste variabili d’ambiente private. Facendolo, esponi questi valori sul client.
Installa il Client di LibSQL
Sezione intitolata Installa il Client di LibSQLInstalla la libreria @libsql/client per connettere Turso ad Astro:
npm install @libsql/clientpnpm add @libsql/clientyarn add @libsql/clientInizializzare un nuovo client
Sezione intitolata Inizializzare un nuovo clientCrea un file turso.ts nella cartella src e richiama createClient, passando le variabili 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,});Esegui query sul Database
Sezione intitolata Esegui query sul DatabasePer accedere delle informazioni sul tuo database, importa turso e esegui una query SQL dentro qualunque compoennte .astro.
L’esempio seguente ottiene tutti i posts dalla tua tabella, mostrando a schermo una lista di titoli in un 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
Sezione intitolata Placeholders SQLIl metodo execute() può prendere un oggetto per passare variaibli alla dichiariazione SQL, come uno slug, o un’impaginazione.
L’esempio seguente ottiene un valore singolo dalla tabella posts WHERE lo slug è un valore ottenuto da Astro.params, a questo punto mostra a schermo il titolo del post.
---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>Risorse per Turso
Sezione intitolata Risorse per Turso- Documentazione di Turso
- Turso su GitHub
- Utilizzo di Turso per servire il contenuto di un blog Astro renderizzato lato server