Skip to content

A PHP library that let you build easily your SQL queries to build your dynamics websites easier, enabling performance and efficiency for your interactions with your databases

License

Notifications You must be signed in to change notification settings

Inkflow59/SQLGenix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SQLGenix πŸš€

Supercharge Your Database Interactions

SQLGenix is your go-to SQL query generator that takes the pain out of database operations. Say goodbye to manual SQL writing and hello to elegant, chainable methods that make database interactions a breeze. Perfect for both rapid application development and sophisticated database management tasks.

Table of Contents

✨ Key Features

  • 🎯 Smart Query Generation - Build complex SQL queries with simple, intuitive methods
  • πŸ”„ Full CRUD Support - Handle SELECT, INSERT, UPDATE, and DELETE operations effortlessly
  • πŸ”Œ Multi-Database Support - Works seamlessly with MySQL, PostgreSQL, SQLite, and more
  • πŸ›‘οΈ Robust Error Handling - Graceful exception management keeps your application stable
  • ⚑ Lightning Fast - Optimized for performance without sacrificing flexibility
  • πŸ“„ Pagination Support - Built-in LIMIT, OFFSET, and page-based pagination
  • πŸ”„ Query Caching - Intelligent caching system for improved performance
  • πŸ”— UNION Operations - Combine multiple queries with UNION and UNION ALL
  • πŸ“¦ Bulk Operations - Efficient batch INSERT, UPDATE, and DELETE operations
  • πŸ” Advanced Joins - Support for INNER, LEFT, RIGHT joins with complex conditions
  • πŸ—οΈ Database Adapters - Adapter pattern for database-specific optimizations

πŸš€ Quick Start

Installation

Get started with Composer:

composer require sqlgenix/sqlgenix

Or clone the repository manually:

git clone https://github.com/Inkflow59/SQLGenix.git
cd SQLGenix
composer install

πŸ“š Usage Examples

Create New Records

require 'src/SQLInsert.php';

$db = new Database();
$insert = new SQLInsert($db);
$insert->into('users')
       ->set(['name', 'email'], ['John Doe', 'john@example.com'])
       ->execute();

Fetch Data

require 'src/SQLSelect.php';

$db = new Database();
$select = new SQLSelect($db);
$result = $select->select(['name', 'email'])
                 ->from('users')
                 ->where('email = "john@example.com"')
                 ->execute();

Update Records

require 'src/SQLUpdate.php';

$db = new Database();
$update = new SQLUpdate($db);
$update->table('users')
       ->set('name', 'Jane Doe')
       ->where('email = "john@example.com"')
       ->execute();

Remove Data

require 'src/SQLDelete.php';

$db = new Database();
$delete = new SQLDelete($db);
$delete->from('users')
       ->where('email = "john@example.com"')
       ->execute();

Pagination

require 'src/SQLSelect.php';

$db = new Database();
$select = new SQLSelect($db);
$result = $select->select(['*'])
                 ->from('users')
                 ->where('status = "active"')
                 ->orderBy(['created_at'], 'DESC')
                 ->paginate(2, 20) // Page 2, 20 per page
                 ->execute();

Query Caching

require 'src/QueryCache.php';
require 'src/SQLSelect.php';

$cache = new QueryCache(100, 3600); // 100 items, 1 hour TTL
$db = new Database();
$select = new SQLSelect($db, $cache);
$result = $select->select(['*'])
                 ->from('users')
                 ->where('active = 1')
                 ->execute(); // Cached automatically

UNION Operations

require 'src/SQLSelect.php';

$db = new Database();
$activeUsers = new SQLSelect($db);
$activeUsers->select(['name', 'email'])->from('active_users');

$inactiveUsers = new SQLSelect($db);
$inactiveUsers->select(['name', 'email'])->from('inactive_users');

$allUsers = new SQLSelect($db);
$result = $allUsers->select(['name', 'email'])
                  ->from('current_users')
                  ->union($activeUsers)
                  ->unionAll($inactiveUsers)
                  ->execute();

Bulk Operations

require 'src/BulkOperations.php';

$db = new Database();
$bulk = new BulkOperations($db);

// Bulk insert 1000 records
$data = []; // Your data array
$result = $bulk->bulkInsert('users', ['name', 'email'], $data);
echo "Inserted: " . $result['inserted_rows'] . " rows";

Multi-Database Support

require 'src/DatabaseAdapterFactory.php';
require 'src/UniversalSQLSelect.php';

// Create MySQL adapter
$mysqlAdapter = DatabaseAdapterFactory::createMySQL([
    'host' => 'localhost',
    'database' => 'myapp',
    'username' => 'user',
    'password' => 'pass'
]);

// Create PostgreSQL adapter
$postgresAdapter = DatabaseAdapterFactory::createPostgreSQL([
    'host' => 'localhost', 
    'database' => 'myapp',
    'username' => 'user',
    'password' => 'pass'
]);

// Same query works on both databases
$mysqlQuery = new UniversalSQLSelect($mysqlAdapter);
$postgresQuery = new UniversalSQLSelect($postgresAdapter);

$result = $mysqlQuery->select(['*'])->from('users')->execute();

βš™οΈ Requirements

  • PHP 7.0+
  • Any major SQL database (MySQL, PostgreSQL, SQLite)
  • Composer for dependency management

πŸ§ͺ Testing

Run the test suite with:

composer test

🀝 Contributing

We love contributions! Here's how you can help:

  1. Fork the repo
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

SQLGenix is MIT licensed. See the LICENSE file for details.

πŸ“¬ Get in Touch

Questions or suggestions? Drop me a line


Made with ❀️ by SQLGenix Team

About

A PHP library that let you build easily your SQL queries to build your dynamics websites easier, enabling performance and efficiency for your interactions with your databases

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published