DEV Community

Cover image for LibSQL Driver for Laravel
Imam Ali Mustofa
Imam Ali Mustofa

Posted on

LibSQL Driver for Laravel

Hello Punk! ๐Ÿ‘‹ Yes, I am again. Sorry for wasting your time reading this pretty blog/article/whatever.


It's re-write?

Yes! But, the first blog is just copy-paste from README.md file. Here the actual story what I've done with Laravel.

PHP Community it's huge! But when Turso/LibSQL Database came, they did not support PHP, because they doesn't have developer that really into in PHP and LibSQL build using Rust, so they have Rust only binary.

For the first launch, They have Rust, Go, Python and TypeScript/JS Official SDKs.

However, Turso provides the HTTP SDK as a creation tool for developers who want to create an SDK that is not yet supported by the official SDK.

From there, several Community SDKs emerged, most of which use the HTTP SDK. When using HTTP SDK so database interact with Remote Database and the developer still use SQLite for In-Memory or Local Interaction. Is it wrong? Of course not, I also did the same thing at first. This is an art, so people can have their own interpretation.

Here is my first Turso/LibSQL Library that support Turso HTTP SDK and Platform API.

But, Turso also have a Embedded Replica that sync local database with remote database on the edge, how do sync then?

Don't worry I am also create a Stupid Worker which will make you poor when using it with the number of interactions reading and writing databases from local to remote via HTTP Protocol.

GitHub logo darkterminal / turso-syncd

Turso Database Background Sync

~ TursoSyncd ~

Turso Dabatabase Background Sync in the Background

Installation

Globally Install

composer global require darkterminal/turso-syncd
Enter fullscreen mode Exit fullscreen mode

or you can install locally within your porject:

composer require darkterminal/turso-syncd
Enter fullscreen mode Exit fullscreen mode

Usage

turso-syncd --database=<database_name> --organization=<organization_name> --token=<token> [--file_recorder=<file>] [--action_log_file=<file>] [--errors_log_file=<file>]
Enter fullscreen mode Exit fullscreen mode

Options

  • --database=<database_name> or -d: The name of the database.
  • --organization=<organization_name> or -o: The name of the organization.
  • --token=<token> or -t: The token for authentication.
  • --file_recorder=<file>: Specify file recorder.
  • --action_log_file=<file>: Specify action log file.
  • --errors_log_file=<file>: Specify errors log file.
  • --help: Display this help message.

Extend in Your Own Daemon

<?php
use Darkterminal\TursoSyncd;

require_once "vendor/autoload.php";

$databaseName       = "your-database-name";
$organizationName   = "your-organization-name";
$token              = "your-turso-token";
$config             = [
    'file_recorder'     => "/path/to/your/recorder-file/recorded_queries.json",
    'action_log_file'
โ€ฆ
Enter fullscreen mode Exit fullscreen mode

Back to This!

When using HTTP SDK so database interact with Remote Database and the developer still use SQLite for In-Memory or Local Interaction. Is it wrong? Of course not, I also did the same thing at first.

But if we use SQLite to create an In-Memory or Local File Connection, it will reduce the artistic value of LibSQL, because with Binary LibSQL, we can create 4 different types of database connections.

  • In-Memory Connection
  • Local Connection
  • Remote Connection
  • Remote Replica (Embedded Replica) Connection

That's why I was challenged to create a Native Extension/Driver/Whatever to get the full power of what Turso/LibSQL has to offer.

You can read the README.md when you landed at my Laravel Driver repository in GitHub

GitHub logo darkterminal / libsql-driver-laravel

๐Ÿ”Œ LibSQL Native Driver for Laravel

Turso + Laravel

Turso + Laravel

SQLite for Production. Powered by libSQL and libSQL Extension for PHP

Turso ยท Quickstart ยท Examples ยท Docs ยท Discord ยท Blog & Tutorials


A LibSQL Driver for Laravel

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

LibSQL is a fork of SQLite and this package is #1 LibSQL Driver that run natively using LibSQL Native Extension/Driver/Whatever and support Laravel Ecosystem.

Requirement

Before using this package, you need to install and configure LibSQL Native Extension for PHP. You can download from LibSQL Extension - Release

  1. Download based on you distribution (Linux/Macos/Darwin)
  2. The archive is contains the extension and libsql_php_extension.stubs.php
  3. Save the extension file in your desire directory
  4. Save the libsql_php_extension.stubs.php in your project or somewhare that can help you to use stand-alone LibSQL driver as an IDE helper. By default this stubs is come inside this package.
  5. Configure php.ini file and added the extension address with relative path that pointed to the extension
  6. Enjoy!

Installation

โ€ฆ

I just want to bring some joy out of the mess I've made writing code while dancing to the music I hate the most.

You can read my recent damage in My-self documentation website: TheDarkDocs

If you like this project and want to support my activities, you can sponsor me on GitHub. Sorry and thank you for taking the time to read.

Top comments (0)