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
Titre de la section Initialisation de Turso dans AstroPrérequis
Titre de la section Prérequis- Turso CLI installé et connecté
- 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
Titre de la section Configuration des variables d’environnementObtenez votre URL de base de données avec la commande suivante :
turso db show <nom-de-base-de-données> --url
Création d’un token 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
Titre de la section Installation du client libSQLInstallez @libsql/client pour connecter Turso à Astro :
npm install @libsql/client
pnpm add @libsql/client
yarn add @libsql/client
Initialisation d’un nouveau client
Titre de la section Initialisation d’un nouveau clientCréez un fichier turso.ts
dans le dossier src
et appelez createClient
, en lui passant 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
Titre de la section Interrogation de votre base de donnéesPour 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>
SQL Placeholders
Titre de la section SQL PlaceholdersLa méthode execute()
peut prendre un objet pour passer 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
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 Turso
Titre de la section Ressources Turso- Turso Docs
- Turso sur GitHub
- Utiliser Turso pour servir le contenu d’un blog Astro rendu côté serveur