INTEGRITY Dokumentace

Turso

Turso je distribuovaná databáze hostovaná na edge, založená na libSQL, open source fork SQLite. Turso bylo navrženo tak, aby minimalizovalo latenci dotazů u aplikací, jejichž dotazy přicházejí odkudkoli na světě.

Nastavit integraci s Turso

Chcete-li nastavit integraci se službou Turso:

  1. Pro vytvoření a naplnění databáze potřebujete nainstalovat Turso CLI. Pro instalaci Turso CLI použijte v terminálu jeden z následujících dvou příkazů:

    # On macOS and linux with homebrew
    brew install tursodatabase/tap/turso
    
    # Manual scripted installation
    curl -sSfL https://get.tur.so/install.sh | bash

    Dále spusťte následující příkaz, abyste se ujistili, že je Turso CLI nainstalováno:

    turso --version
  2. Než vytvoříte svou první databázi Turso, musíte se ověřit pomocí svého účtu GitHub spuštěním:

    turso auth login
    Waiting for authentication...
    ✔  Success! Logged in as <YOUR_GITHUB_USERNAME>

    Po přihlášení můžete vytvořit databázi pomocí příkazu turso db create <DATABASE_NAME>. Turso vytvoří databázi a automaticky zvolí lokalitu, která je vám nejblíže.

    turso db create my-db
    
    # Example:
    Creating database my-db in Amsterdam, Netherlands (ams)
    
    # Once succeeded:
    Created database my-db in Amsterdam, Netherlands (ams) in 13 seconds.

    Jakmile máte první databázi vytvořenou, můžete se k ní přímo připojit a spouštět proti ní SQL dotazy.

    turso db shell my-db
  3. Zkopírujte následující SQL dotaz do shellu, který jste právě otevřeli:

    CREATE TABLE elements (
      id INTEGER NOT NULL,
      elementName TEXT NOT NULL,
      atomicNumber INTEGER NOT NULL,
      symbol TEXT NOT NULL
    );
    
    INSERT INTO elements (id, elementName, atomicNumber, symbol)
    VALUES (1, 'Hydrogen', 1, 'H'),
      (2, 'Helium', 2, 'He'),
      (3, 'Lithium', 3, 'Li'),
      (4, 'Beryllium', 4, 'Be'),
      (5, 'Boron', 5, 'B'),
      (6, 'Carbon', 6, 'C'),
      (7, 'Nitrogen', 7, 'N'),
      (8, 'Oxygen', 8, 'O'),
      (9, 'Fluorine', 9, 'F'),
      (10, 'Neon', 10, 'Ne');
  4. Nakonfigurujte přihlašovací údaje databáze Turso ve svém Workeru:

    Do Workeru musíte jako secrets přidat URL adresu databáze Turso a autentizační token. Nejprve získejte URL adresu databáze a vytvořte autentizační token:

    # Get your database URL
    turso db show my-db --url
    
    # Create an authentication token
    turso db tokens create my-db

    Poté je přidejte jako tajné hodnoty do vašeho Workeru pomocí Wrangler:

    # Add the database URL as a secret
    npx wrangler secret put TURSO_URL
    # When prompted, paste your database URL
    
    # Add the authentication token as a secret  
    npx wrangler secret put TURSO_AUTH_TOKEN
    # When prompted, paste your authentication token
  5. Ve svém Workeru nainstalujte klientskou knihovnu Turso:

    npm i @libsql/client
  6. Následující příklad ukazuje, jak ve Workeru odeslat dotaz do databáze Turso. Přihlašovací údaje potřebné pro připojení k Turso byly přidány jako secrets do vašeho Workeru.

    import { Client as LibsqlClient, createClient } from "@libsql/client/web";
    
    export interface Env {
    	TURSO_URL?: string;
    	TURSO_AUTH_TOKEN?: string;
    }
    
    export default {
    	async fetch(request, env, ctx): Promise<Response> {
    		const client = buildLibsqlClient(env);
    
    		try {
    			const res = await client.execute("SELECT * FROM elements");
    			return new Response(JSON.stringify(res), {
    				status: 200,
    				headers: { "Content-Type": "application/json" },
    			});
    		} catch (error) {
    			console.error("Error executing SQL query:", error);
    			return new Response(
    				JSON.stringify({ error: "Internal Server Error" }),
    				{
    					status: 500,
    				},
    			);
    		}
    	},
    } satisfies ExportedHandler<Env>;
    
    function buildLibsqlClient(env: Env): LibsqlClient {
    	const url = env.TURSO_URL?.trim();
    	if (url === undefined) {
    		throw new Error("TURSO_URL env var is not defined");
    	}
    
    	const authToken = env.TURSO_AUTH_TOKEN?.trim();
    	if (authToken == undefined) {
    		throw new Error("TURSO_AUTH_TOKEN env var is not defined");
    	}
    
    	return createClient({ url, authToken });
    }
    • Import klientské knihovny libSQL @libsql/client/web musí být importováno přesně tak, jak je uvedeno, při práci s Cloudflare Workers. Import mimo web nebude v prostředí Workers fungovat.
    • Env rozhraní obsahuje proměnná prostředí a secret definováno, když jste v kroku 4 přidali integraci Turso.
    • Env rozhraní také ukládá do mezipaměti objekt klienta libSQL a router, který byl vytvořen při prvním požadavku na Worker.
    • Worker používá buildLibsqlClient pro dotazování na elements databáze a vrátí odpověď jako objekt JSON.

Jakmile máte nastavené prostředí a připravený kód, můžete Worker před nasazením otestovat lokálně.

Další informace o Turso naleznete v Oficiální dokumentace Turso.