Turso & Astro
Turso est une base de données distribuée construite sur libSQL, un fork de SQLite. Elle est optimisée pour une faible latence de requête, la rendant adaptée aux applications globales.
Initialisation de Turso dans Astro
Section intitulée « Initialisation de Turso dans Astro »Prérequis
Section intitulée « Prérequis »- La CLI de Turso installée et connectée
 - Une base de données Turso avec un schéma
 - Votre URL de base de données
 - Un jeton d’accès
 
Configuration des variables d’environnement
Section intitulée « Configuration des variables d’environnement »Obtenez votre URL de base de données avec la commande suivante :
turso db show <nom-de-base-de-données> --urlCréez un jeton d’authentification pour la base de données :
turso db tokens create <nom-base-de-données>Ajoutez le résultat des deux commandes ci-dessus dans votre fichier .env à la racine de votre projet. Si ce fichier n’existe pas, créez-le.
TURSO_DATABASE_URL=libsql://...TURSO_AUTH_TOKEN=N’utilisez pas le préfixe PUBLIC_ lors de la création de ces variables d’environnement privées. Cela exposerait ces valeurs côté client.
Installation du client libSQL
Section intitulée « Installation du client libSQL »Installez @libsql/client pour connecter Turso à Astro :
npm install @libsql/clientpnpm add @libsql/clientyarn add @libsql/clientInitialisation d’un nouveau client
Section intitulée « Initialisation d’un nouveau client »Créez un fichier turso.ts dans le dossier src et appelez createClient, en lui transmettant TURSO_DATABASE_URL et 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,});Interrogation de votre base de données
Section intitulée « Interrogation de votre base de données »Pour accéder aux informations de votre base de données, importez turso et exécutez une requête SQL à l’intérieur de n’importe quel composant .astro.
L’exemple suivant récupère tous les articles de votre table, puis affiche une liste de titres dans un composant <BlogIndex /> :
---import { turso } from '../turso'
const { rows } = await turso.execute('SELECT * FROM posts')---
<ul>  {rows.map((post) => (    <li>{post.title}</li>  ))}</ul>Caractères SQL substituables
Section intitulée « Caractères SQL substituables »La méthode execute() peut accepter un objet pour transmettre des variables à l’instruction SQL, tel que le slug ou la pagination.
L’exemple suivant récupère une seule entrée de la table posts où (WHERE) le slug est la valeur récupérée depuis Astro.params, puis affiche le titre de l’article.
---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>Ressources de Turso
Section intitulée « Ressources de Turso »- Documentation de Turso (Anglais)
 - Turso sur GitHub (Anglais)
 - Utiliser Turso pour diffuser le contenu d’un blog Astro rendu côté serveur (Anglais)