darkterminal/turso-http

The TursoHTTP library is a PHP wrapper for Turso HTTP Database API

v1.2.0 2024-01-28 07:32 UTC

This package is auto-updated.

Last update: 2024-04-30 00:40:14 UTC


README

TursoHTTP

The TursoHTTP library is a PHP wrapper for Turso HTTP Database API. 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, retrieve query results, and access various response details.

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)

Installation

You can install the TursoHTTP library using Composer:

composer require darkterminal/turso-http

Usage Example

use Darkterminal\TursoHTTP;

require_once 'vendor/autoload.php';

$databaseName       = "your-database-name";
$organizationName   = "your-organization-name";
$token              = "your-turso-database-token";

$tursoAPI = new TursoHTTP($databaseName, $organizationName, $token);
$query = new SadQuery();

$createTableUsers = $query->createTable('users')
    ->addColumn('userId', DataType::INTEGER, ['PRIMARY KEY', 'AUTOINCREMENT'])
    ->addColumn('name', DataType::TEXT)
    ->addColumn('email', DataType::TEXT)
    ->endCreateTable();

$createNewUser = $query->insert('users', ['name' => 'darkterminal', 'email' => 'darkterminal@duck.com'])->getQuery();

$tableCreated = $tursoAPI
    ->addRequest("execute", $createTableUsers)
    ->addRequest("close")
    ->queryDatabase()
    ->toJSON();
echo $tableCreated . PHP_EOL; // display the result on terminal

$userCreated = $tursoAPI
    ->addRequest("execute", $createNewUser)
    ->addRequest("close")
    ->queryDatabase()
    ->toJSON();
echo $userCreated . PHP_EOL; // display the result on terminal

Features

  • Chainable Methods: Easily build complex queries using chainable methods for adding requests.
  • Response Accessors: Retrieve specific details from the query response using dedicated accessor methods.
  • Error Handling: Detect cURL errors and gracefully handle them.
  • JSON Output: Convert the response to JSON for convenient use.

Documentation

TursoHTTP

Method Parameters Types Description
__construct $databaseName, $organizationName, $authToken string, string, string Constructor for creating a new instance of TursoHTTP. Requires database name, organization name, and authentication token.
addRequest $type, $stmt = '', $baton = '' string, string, string Build request query statement. Supports "execute" or "close" request types with optional SQL statement and baton.
queryDatabase - - Run the query for Turso Database.
get - - Return the full result database query in an associative array.
toJSON - - Return the full result database query in JSON format.
getBaton - - Return only the baton (connection identifier).
getBaseUrl - - Return only the base URL.
getResults - - Return the results for each of the requests made in the pipeline.
getCols - - Return the list of columns for the returned rows.
getRows - - Return the rows returned for the query.
getAffectedRowCount - - Return the number of rows affected by the query.
getLastInsertRowId - - Return the ID of the last inserted row.
getReplicationIndex - - Return the replication timestamp at which this query was executed.

SadQuery

Method Parameter & Type Description
createTable string $tableName Start building a CREATE TABLE query for the specified table.
addColumn string $columnName, string $dataType, array $constraints = [] Add a column definition to the table.
endCreateTable Generate the final CREATE TABLE SQL query based on added columns.
renameColumn string $tableName, string $oldColumnName, string $newColumnName, string $dataType Rename a column in the specified table.
dropTable string $tableName Drop a table if it exists.
select array $columns Start building a SELECT query with specified columns.
from string $table Specify the table to SELECT FROM.
where string $condition Add a WHERE clause to the SELECT query.
orderBy array $columns Add an ORDER BY clause to the SELECT query.
limit int $limit Add a LIMIT clause to the SELECT query.
between string $column, $value1, $value2 Add a WHERE clause to check if a column value is between two values.
in string $column, array $values Add a WHERE clause to check if a column value is in a list of values.
like string $column, string $pattern Add a WHERE clause to check if a column value matches a pattern using LIKE.
isNull string $column Add a WHERE clause to check if a column value is NULL.
glob string $column, string $pattern Add a WHERE clause to check if a column value matches a pattern using GLOB.
join string $table, string $condition Add a JOIN clause to the SELECT query.
innerJoin string $table, string $condition Add an INNER JOIN clause to the SELECT query.
leftJoin string $table, string $condition Add a LEFT JOIN clause to the SELECT query.
crossJoin string $table Add a CROSS JOIN clause to the SELECT query.
selfJoin string $table, string $condition Add a self JOIN clause to the SELECT query.
fullOuterJoin string $table, string $condition Add a FULL OUTER JOIN clause to the SELECT query.
groupBy array $columns Add a GROUP BY clause to the SELECT query.
having string $condition Add a HAVING clause to the SELECT query.
union string $query Add a UNION clause to the SELECT query.
except string $query Add an EXCEPT clause to the SELECT query.
intersect string $query Add an INTERSECT clause to the SELECT query.
subquery string $subquery Add a subquery to the SELECT query.
exists string $subquery Add an EXISTS clause with a subquery to the SELECT query.
case array $conditions, string $else Add a CASE statement to the SELECT query.
insert string $table, array $values Add an INSERT INTO statement to the query.
update string $table, array $values Add an UPDATE statement to the query.
delete string $table Add a DELETE FROM statement to the query.
replace string $table, array $values Add a REPLACE INTO statement to the query.
beginTransaction Begin a transaction in the query.
commit Commit the current transaction in the query.
rollback Rollback the current transaction in the query.
getQuery Get the current query string.

Turso Platform API

Manage databases, replicas, and teams with the Turso Platform API using PHP.

API Token

Method Parameters Types Description
__construct $token string Constructor for the APITokens class, sets the API token.
list - - List API tokens.
create $tokenName string Create a new API token with the specified name.
validate - - Validate the API token.
revoke $tokenName string Revoke an API token with the specified name.
get - array Get the API response as an array.
toJSON - string or array or null Get the API response as a JSON string, array, or null if not applicable.

Example Usage

<?php

// Assuming you have autoloading set up for your namespace

use Darkterminal\TursoHttp\core\Platform\APITokens;

// Replace 'your_api_token' with the actual API token you have
$apiToken = 'your_api_token';

// Create an instance of APITokens with the provided API token
$apiTokens = new APITokens($apiToken);

// Example: List API tokens
$responseList = $apiTokens->list()->get();
print_r($responseList);

// Example: Create a new API token
$newTokenName = 'new_token_name';
$responseCreate = $apiTokens->create($newTokenName)->get();
print_r($responseCreate);

// Example: Validate the API token
$responseValidate = $apiTokens->validate()->get();
print_r($responseValidate);

// Example: Revoke an API token
$tokenToRevoke = 'token_to_revoke';
$responseRevoke = $apiTokens->revoke($tokenToRevoke)->get();
print_r($responseRevoke);

// Example: Get the API response as a JSON string or array
$jsonResponse = $apiTokens->toJSON();
echo $jsonResponse;

Turso API Token: https://docs.turso.tech/api-reference/tokens

Audit Logs

Method Parameters Types Description
__construct $token string Constructor for the AuditLogs class, sets the API token.
list_audit_logs $organizationName, $page_size, $page string, int, int List audit logs for a specific organization with pagination.
get - array Get the API response as an array.
toJSON - `string array

Example Usage

<?php

// Assuming you have autoloading set up for your namespace

use Darkterminal\TursoHttp\core\Platform\AuditLogs;

// Replace 'your_api_token' with the actual API token you have
$apiToken = 'your_api_token';

// Replace 'your_organization_name', 10, and 1 with actual values
$organizationName = 'your_organization_name';
$page_size = 10;
$page = 1;

// Create an instance of AuditLogs with the provided API token
$auditLogs = new AuditLogs($apiToken);

// Example: List audit logs for a specific organization with pagination
$responseListAuditLogs = $auditLogs->list_audit_logs($organizationName, $page_size, $page)->get();
print_r($responseListAuditLogs);

// Example: Get the API response as a JSON string or array
$jsonResponse = $auditLogs->toJSON();
echo $jsonResponse;

?>

Turso Audit Logs: https://docs.turso.tech/api-reference/audit-logs

Database

Method Parameters Types Description
__construct $token string Constructor for the Databases class, sets the API token.
list $organizationName string List databases for a specific organization.
create $organizationName, $databaseName, $group = 'default' string, string, string Create a new database with optional group parameter.
get_database $organizationName, $databaseName string, string Get information about a specific database.
usage $organizationName, $databaseName string, string Get usage information for a specific database.
delete $organizationName, $databaseName string, string Delete a specific database.
list_instances $organizationName, $databaseName string, string List instances for a specific database.
get_instance $organizationName, $databaseName string, string Get information about a specific database instance.
create_token $organizationName, $databaseName, $expiration = 'never', $authorization = 'read-only' string, string, string, string Create an access token for a specific database with optional parameters.
invalidate_tokens $organizationName, $databaseName string, string Invalidate access tokens for a specific database.
upload_dump $organizationName, $filePath string, string Upload a database dump.
get - array Get the API response as an array.
toJSON - string or array or null Get the API response as a JSON string, array, or null if not applicable.

Example usage

<?php

// Assuming you have autoloading set up for your namespace

use Darkterminal\TursoHttp\core\Platform\Databases;

// Replace 'your_api_token', 'your_organization_name', and 'your_database_name' with actual values
$apiToken = 'your_api_token';
$organizationName = 'your_organization_name';
$databaseName = 'your_database_name';

// Create an instance of Databases with the provided API token
$databases = new Databases($apiToken);

// Example: List databases for a specific organization
$responseListDatabases = $databases->list($organizationName)->get();
print_r($responseListDatabases);

// Example: Create a new database
$responseCreateDatabase = $databases->create($organizationName, $databaseName)->get();
print_r($responseCreateDatabase);

// Example: Get information about a specific database
$responseGetDatabase = $databases->get_database($organizationName, $databaseName)->get();
print_r($responseGetDatabase);

// Example: Get usage information for a specific database
$responseUsage = $databases->usage($organizationName, $databaseName)->get();
print_r($responseUsage);

// Example: Delete a specific database
$responseDeleteDatabase = $databases->delete($organizationName, $databaseName)->get();
print_r($responseDeleteDatabase);

// Example: List instances for a specific database
$responseListInstances = $databases->list_instances($organizationName, $databaseName)->get();
print_r($responseListInstances);

// Example: Get information about a specific database instance
$responseGetInstance = $databases->get_instance($organizationName, $databaseName)->get();
print_r($responseGetInstance);

// Example: Create an access token for a specific database
$responseCreateToken = $databases->create_token($organizationName, $databaseName)->get();
print_r($responseCreateToken);

// Example: Invalidate access tokens for a specific database
$responseInvalidateTokens = $databases->invalidate_tokens($organizationName, $databaseName)->get();
print_r($responseInvalidateTokens);

// Example: Upload a database dump
$dumpFilePath = '/path/to/your/database/dump.sql';
$responseUploadDump = $databases->upload_dump($organizationName, $dumpFilePath)->get();
print_r($responseUploadDump);

// Example: Get the API response as a JSON string or array
$jsonResponse = $databases->toJSON();
echo $jsonResponse;

?>

Turso Databases: https://docs.turso.tech/api-reference/databases

Groups

Method Parameters Types Description
__construct $token string Constructor for the Groups class, sets the API token.
list $organizationName string List groups for a specific organization.
create $organizationName, $groupName, $location = 'default' string, string, string Create a new group with optional location parameter.
get_group $organizationName, $groupName string, string Get information about a specific group.
delete $organizationName, $groupName string, string Delete a specific group.
transfer $organizationName, $oldGroupName, $newGroupName string, string, string Transfer a specific group to another organization.
add_location $organizationName, $groupName, $location_code string, string, string Add a location to a specific group.
delete_location $organizationName, $groupName, $location_code string, string, string Delete a location from a specific group.
update_version $organizationName, $groupName string, string Update the version of a specific group.
create_token $organizationName, $groupName, $expiration = 'never', $authorization = 'read-only' string, string, string, string Create an access token for a specific group with optional parameters.
invalidate_tokens $organizationName, $groupName string, string Invalidate access tokens for a specific group.
get - array Get the API response as an array.
toJSON - string or array or null Get the API response as a JSON string, array, or null if not applicable.

Example usage

<?php

// Assuming you have autoloading set up for your namespace

use Darkterminal\TursoHttp\core\Platform\Groups;

// Replace 'your_api_token', 'your_organization_name', and 'your_group_name' with actual values
$apiToken = 'your_api_token';
$organizationName = 'your_organization_name';
$groupName = 'your_group_name';

// Create an instance of Groups with the provided API token
$groups = new Groups($apiToken);

// Example: List groups for a specific organization
$responseListGroups = $groups->list($organizationName)->get();
print_r($responseListGroups);

// Example: Create a new group
$responseCreateGroup = $groups->create($organizationName, $groupName)->get();
print_r($responseCreateGroup);

// Example: Get information about a specific group
$responseGetGroup = $groups->get_group($organizationName, $groupName)->get();
print_r($responseGetGroup);

// Example: Delete a specific group
$responseDeleteGroup = $groups->delete($organizationName, $groupName)->get();
print_r($responseDeleteGroup);

// Example: Transfer a specific group to another organization
$newOrganizationName = 'new_organization_name';
$responseTransferGroup = $groups->transfer($organizationName, $groupName, $newOrganizationName)->get();
print_r($responseTransferGroup);

// Example: Add a location to a specific group
$locationCode = 'location_code';
$responseAddLocation = $groups->add_location($organizationName, $groupName, $locationCode)->get();
print_r($responseAddLocation);

// Example: Delete a location from a specific group
$responseDeleteLocation = $groups->delete_location($organizationName, $groupName, $locationCode)->get();
print_r($responseDeleteLocation);

// Example: Update the version of a specific group
$responseUpdateVersion = $groups->update_version($organizationName, $groupName)->get();
print_r($responseUpdateVersion);

// Example: Create an access token for a specific group
$responseCreateToken = $groups->create_token($organizationName, $groupName)->get();
print_r($responseCreateToken);

// Example: Invalidate access tokens for a specific group
$responseInvalidateTokens = $groups->invalidate_tokens($organizationName, $groupName)->get();
print_r($responseInvalidateTokens);

// Example: Get the API response as a JSON string or array
$jsonResponse = $groups->toJSON();
echo $jsonResponse;

?>

Turso Groups: https://docs.turso.tech/api-reference/groups

Locations

Method Parameters Types Description
__construct $token string Constructor for the Locations class, sets the API token.
get_locations - - Get a list of available locations.
closest_region - - Get the closest region based on the user's location.
get - array Get the API response as an array.
toJSON - `string array

Example usage

<?php

// Assuming you have autoloading set up for your namespace

use Darkterminal\TursoHttp\core\Platform\Locations;

// Replace 'your_api_token' with the actual API token
$apiToken = 'your_api_token';

// Create an instance of Locations with the provided API token
$locations = new Locations($apiToken);

// Example: Get a list of available locations
$responseGetLocations = $locations->get_locations()->get();
print_r($responseGetLocations);

// Example: Get the closest region based on the user's location
$responseClosestRegion = $locations->closest_region()->get();
print_r($responseClosestRegion);

// Example: Get the API response as a JSON string or array
$jsonResponse = $locations->toJSON();
echo $jsonResponse;

?>

Turso Locations: https://docs.turso.tech/api-reference/locations

Organizations

Method Parameters Types Description
__construct $token string Constructor for the Organizations class, sets the API token.
list - - Get a list of organizations.
update $organizationName, $overages: bool = true string, bool Update organization details.
members $organizationName string Get a list of members in an organization.
add_member $organizationName, $role, $username string, string, string Add a member to the organization.
remove_member $organizationName, $username string, string Remove a member from the organization.
invite_lists $organizationName string Get the list of invite lists in the organization.
create_invite $organizationName, $role, $username string, string, string Create an invite in the organization.
get - array Get the API response as an array.
toJSON - `string array

Example usage

<?php

// Assuming you have autoloading set up for your namespace

use Darkterminal\TursoHttp\core\Platform\Organizations;

// Replace 'your_api_token' with the actual API token
$apiToken = 'your_api_token';

// Create an instance of Organizations with the provided API token
$organizations = new Organizations($apiToken);

// Example: Get a list of organizations
$responseGetOrganizations = $organizations->list()->get();
print_r($responseGetOrganizations);

// Example: Update organization details
$responseUpdateOrganization = $organizations->update('organization_name')->get();
print_r($responseUpdateOrganization);

// Example: Get a list of members in an organization
$responseGetMembers = $organizations->members('organization_name')->get();
print_r($responseGetMembers);

// Example: Add a member to the organization
$responseAddMember = $organizations->add_member('organization_name', 'member_role', 'member_username')->get();
print_r($responseAddMember);

// Example: Remove a member from the organization
$responseRemoveMember = $organizations->remove_member('organization_name', 'member_username')->get();
print_r($responseRemoveMember);

// Example: Get the list of invite lists in the organization
$responseGetInviteLists = $organizations->invite_lists('organization_name')->get();
print_r($responseGetInviteLists);

// Example: Create an invite in the organization
$responseCreateInvite = $organizations->create_invite('organization_name', 'invite_role', 'invite_username')->get();
print_r($responseCreateInvite);

// Example: Get the API response as a JSON string or array
$jsonResponse = $organizations->toJSON();
echo $jsonResponse;

?>

Turso Organizations: https://docs.turso.tech/api-reference/organizations

License

This library is licensed under the MIT License - see the LICENSE file for details.