Skip to content

Simple and powerfull tool that allows to use json file like a database. It provides collection of methods that you can use like a database query builder.

Notifications You must be signed in to change notification settings

mohamed-samir907/JLDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP JLDB (JSON Lite DB)

Simple and powerfull tool that allows to use json file like a database. It provides collection of methods that you can use like a database query builder.

Installation

composer require samirzz/jldb

Usage

  1. Create a config.php file like that
<?php

return [

    /**
     * The default json file storage path that the user store the data on it.
     */
    'db_path' => __DIR__ . '/../storage',

    /**
     * Database name (json file name)
     */
    'db_name' => 'default.json'
];
  1. include config file in your project and create new object from the class like that
<?php
// index.php
require __DIR__ . '/vendor/autoload.php';

use Samirzz\JsonDB\JsonDB;

$config = include __DIR__ . '/config/jsondb.php';

$db = new JsonDB($config);

Now, you can use the method like that

// index.php

/**
 * NOTE:
 * When you write the name of the table, if the table
 * not exists we will create it for you.
 * So don't worry about the creation of the table.
 */

/*
 | Create Record on the table
 |
 */

$data = [
    "name" => "Mohamed Samir",
    "email" => "gm.mohamedsamir@gmail.com",
    "github" => "mohamed-samir907"
];

// This will create record on users table 
// If the data array doesn't has a primary key
// we will add primary key on create method to the data
// array. The default primary key is 'id' if you need
// to change it, pass the name of primary key as second paramenter
$users = $db->table('users')->create($data); // primaryKey = id
$users = $db->table('users')->create($data, '_key'); //primary key = _key


/*
 | Update an Existing Record on the table
 |
 */

$data = [
    "name" => "Orange",
    "quantity" => 4,
    "price" => 10,
    "totalPrice" => 40
];

$products = $db->table('products')->update(27, $data);

// if the primary key not equal to 'id' then you can pass the prmary key as the following
$products = $db->table('products')->update(27, $data, '_key');

/*
 | Delete an Existing Record on the table
 |
 */

$db->table('users')->delete(12);

// OR: in case of primary key changed
$db->table('users')->delete(12, '_key');



/*
 |      Fetch the data
 |
 */

// Get all tables data
$database = $db->all();

// Get table data
$products = $db->table('products')->find(27);
$products = $db->table('products')->find(27, '_key');


// Get table data
$products = $db->table('products')->get();

// Get with where
$products = $db->table('products')
    ->where('name', '=', 'Orange')
    ->get();

$products = $db->table('products')
    ->where('name', '=', 'Orange')
    ->where('totalPrice', '>=', '10')
    ->get();

// Get the records Paginated
$products = $db->table('products')->paginate(20);

// Get last record on the table
$product = $db->table('products')->last();

// Get first record on the table
$product = $db->table('products')->first();

// Get count records on the table
$countProducts = $db->table('products')->count();

// Get count of column=value in the table
$countOrange = $db->table('products')->countOf("name", "Orange");

// If you love object style you can convert the array to object like that
// use toObject() helper function
$users = toObject($db->table('users')->get());

foreach ($users as $user) {
    echo $user->name;
}

TODO

  • add join, like, take, skip, groupBy, orderBy

  • support functions like sum, avg, ... and allow the user to create his own function.

  • select(...$columns)

  • create prepare trait to check pendings and return the result of them.

  • change the structure

    • create folder for each database
    • create json file for each table
  • add encryption to the database

  • add username, password for connect to the database.

  • add Model for each table

  • add schema class and save the tables schema in json file related to the database it self.

  • add validation class for validate the type of the column.

  • add relationships between tables.

  • Add support to redis

About

Simple and powerfull tool that allows to use json file like a database. It provides collection of methods that you can use like a database query builder.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages