samsmithkruz/database-handler

A reusable database handler supporting SQL & NoSQL.

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

pkg:composer/samsmithkruz/database-handler

1.0.0 2025-04-01 17:18 UTC

This package is auto-updated.

Last update: 2025-12-31 00:36:15 UTC


README

A reusable PHP database handler supporting SQL (MySQL, PostgreSQL) and NoSQL (MongoDB, Redis).

Packagist License

Overview

database-handler is a lightweight, flexible, and reusable PHP package that provides a unified interface for interacting with both SQL and NoSQL databases.
It simplifies database operations and supports MySQL, PostgreSQL, MongoDB, and Redis, making it ideal for modern web applications.

Features

Multi-Database Support - Works with MySQL, PostgreSQL, MongoDB, and Redis.
Unified API - Consistent methods across different database types.
PSR-4 Autoloading - Easy to integrate into any PHP project.
Flexible Queries - Raw queries, transactions, and batch operations supported.
Exception Handling - Catches and logs errors gracefully.
Lightweight & Fast - Designed for efficiency with minimal dependencies.

Installation

Install via Composer:

composer require samsmithkruz/database-handler

Configuration

Create a database configuration array based on your preferred database.

MySQL / PostgreSQL Example

use SamsmithKruz\Database\Database;

$config = [
    'driver'   => 'mysql', // or 'pgsql' for PostgreSQL
    'host'     => '127.0.0.1',
    'port'     => 3306,
    'database' => 'test_db',
    'username' => 'root',
    'password' => '',
    'charset'  => 'utf8mb4'
];

$db = new Database($config);

MongoDB Example

use SamsmithKruz\Database\Database;

$config = [
    'driver'   => 'mongodb',
    'uri'      => 'mongodb://127.0.0.1:27017',
    'database' => 'test_db'
];

$db = new Database($config);

Redis Example

use SamsmithKruz\Database\Database;

$config = [
    'driver'   => 'redis',
    'scheme'   => 'tcp', // Optional
    'host' => '127.0.0.1',
    'timeout'   => '0.0', // Seconds
    'port' => 6379
];

$db = new Database($config);

Usage Guide

Insert Data

$data = ['name' => 'John Doe', 'email' => 'john@example.com'];
$db->insert('users', $data);

Find One Record

$user = $db->findOne('users', ['email' => 'john@example.com']);
print_r($user);

Find Multiple Records

$users = $db->findMany('users', ['status' => 'active']);

Update Data

$db->updateOne('users', ['email' => 'john@example.com'], ['status' => 'inactive']);

Delete Data

$db->deleteOne('users', ['email' => 'john@example.com']);

Raw Query (MongoDB)

$query = [['$match' => ['status' => 'active']]];
$results = $db->rawQuery('users', $query);

Running Tests

Ensure you have PHPUnit installed and run:

vendor/bin/phpunit --configuration phpunit.xml

Contributing

We welcome contributions! 🚀

  1. Fork the repository
  2. Create a new feature branch (git checkout -b feature-name)
  3. Make your changes
  4. Submit a pull request

See CONTRIBUTING.md for more details.

License

This package is licensed under the MIT License.
See the LICENSE file for details.

Author

👤 Samuel Benny (Smith Kruz)
🔗 GitHub: samsmithkruz
🔗 LinkedIn: smithkruz