Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mohamed-samir907/jldb

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.
https://github.com/mohamed-samir907/jldb

jldb json json-db json-lite json-lite-database php7

Last synced: about 1 month ago
JSON representation

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.

Awesome Lists containing this project

README

        







# 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

```json
composer require samirzz/jldb
```

## Usage

1. Create a config.php file like that

```php
__DIR__ . '/../storage',

/**
* Database name (json file name)
*/
'db_name' => 'default.json'
];

```

2. include config file in your project and create new object from the class like that

```php
"Mohamed Samir",
"email" => "[email protected]",
"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