darkterminal / turso-client-http
The Turso Client HTTP library is a PHP wrapper for Turso HTTP Database API
Fund package maintenance!
darkterminal
Other
Requires
- php: >=8.1
- monolog/monolog: ^3.7
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- pestphp/pest: ^2.34
README
The TursoHTTP
library is a PHP wrapper for Turso HTTP Database API (Only). It simplifies interaction with Turso databases using the Hrana over HTTP protocol. This library provides an object-oriented approach to build and execute SQL queries with same API Interface like PHP Native Extension Turso Client PHP.
Requirements
- Intention and Courage
- Instinct as a Software Freestyle Engineer
- Strong determination!
- Turso Account
- Don't forget to install PHP on your machine
- A cup of coffee and the music you hate the most
- Dancing (optional: if you are willing)
Features
- libSQL Native Extension like API Interface
- Schema Builder
- Query Builder
- Turso Platform API
- Timezone Support
Installation
You can install the TursoHTTP library using Composer:
composer require darkterminal/turso-client-http
Environment Variables
Usage Example
use Darkterminal\TursoHttp\LibSQL; require_once 'vendor/autoload.php'; $dbname = getenv('DB_URL'); $authToken = getenv('DB_TOKEN'); $db = new LibSQL("dbname=$dbname&authToken=$authToken"); echo $db->version() . PHP_EOL; $create_table = <<<SQL CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT ) SQL; $db->execute($create_table);
LibSQL Schema Builder
<?php use Darkterminal\TursoHttp\core\Enums\DataType; use Darkterminal\TursoHttp\LibSQL; use Darkterminal\TursoHttp\core\Builder\LibSQLBlueprint; use Darkterminal\TursoHttp\core\Builder\LibSQLSchemaBuilder; require_once 'vendor/autoload.php'; try { $dbname = getenv('DB_URL'); $authToken = getenv('DB_TOKEN'); $db = new LibSQL("dbname=$dbname&authToken=$authToken"); $schemaBuilder = new LibSQLSchemaBuilder($db); // Creating table $schemaBuilder->create('contacts', function(LibSQLBlueprint $table) { $table->increments('id'); $table->string('name'); $table->unique('email'); $table->string('phone'); $table->timestamps(); })->execute(); echo "Table created successfully.\n"; // Add new column in the table $schemaBuilder->table('contacts', function(LibSQLBlueprint $table) { $table->addColumn(DataType::TEXT, 'address'); })->execute(); echo "Column added successfully.\n"; // Drop the table $schemaBuilder->drop('contacts')->execute(); echo "Table contacts successfully dropped!.\n"; } catch (Exception $e) { echo "An error occurred: " . $e->getMessage(); }
Raw Query
<?php use Darkterminal\TursoHttp\LibSQL; require_once getcwd() . '/vendor/autoload.php'; $dbname = getenv('DB_URL'); $authToken = getenv('DB_TOKEN'); $db = new LibSQL("dbname=$dbname;authToken=$authToken"); $query = <<<SQL INSERT INTO contacts (name, email, phone, address) VALUES (?, ?, ?, ?) SQL; $db->execute($query, [ 'Imam Ali Mustofa', 'darkterminal@duck.com', '08123456789', 'Punk Univers' ]);
Query Builder
<?php use Darkterminal\TursoHttp\LibSQL; use Darkterminal\TursoHttp\core\Builder\LibSQLQueryBuilder; require_once getcwd() . '/vendor/autoload.php'; $dbname = getenv('DB_URL'); $authToken = getenv('DB_TOKEN'); $db = new LibSQL("dbname=$dbname;authToken=$authToken"); $sql = new LibSQLQueryBuilder($db); $contacts = $sql->table('contacts') ->where('address', '=', 'Punk Universe') ->get(); var_dump($contacts);
License
This library is licensed under the MIT License - see the LICENSE file for details.