# Mariavel Backend - Database Management API This is the backend API for Mariavel, built with Laravel 11. It provides a secure and robust abstraction layer for interacting with MariaDB/MySQL databases, managing schema metadata, and performing administrative operations. ## 🛠️ Core Responsibilities - **Schema Discovery**: Dynamically fetches databases, tables, and column metadata using system catalogs (`information_schema`). - **SQL Execution**: Executes raw SQL queries and returns structured data with row counts and execution metrics. - **Administrative Operations**: Handles bulk table maintenance (Truncate, Drop, Optimize) and technical specifications. - **Database Backups**: Integrates with system tools like `mysqldump` to generate full database exports. - **Import Management**: Processes SQL files and ZIP archives, handling file extraction and sequence execution. - **Data Transformation**: Maps database-specific types to frontend-friendly formats. ## 🏗️ Architecture & Structure The backend follows a service-oriented architecture to ensure separation of concerns and database-agnostic potential: ### Controller Layer - `app/Http/Controllers/Api/SchemaController.php`: Exposes REST endpoints for the frontend, handling request validation and response formatting. ### Service Layer (Abstraction) - `app/Services/DatabaseService.php`: The main entry point for database operations. It orchestrates high-level tasks and manages driver interactions. ### Driver Layer (Implementation) - `app/Services/Database/MySqlDriver.php`: Contains the concrete logic for MySQL/MariaDB. It encapsulates raw SQL generation and system command execution. ## 📂 Directory Structure ``` app/ ├── Http/ │ └── Controllers/ │ └── Api/ # API Endpoints (SchemaController) ├── Services/ │ ├── Database/ # Driver implementations (MySqlDriver) │ └── DatabaseService.php # Main database abstraction service ├── Models/ # Eloquent models (if applicable) └── Providers/ # Service providers for dependency injection routes/ └── api.php # API route definitions storage/ └── app/backups/ # Temporary storage for export/import files ``` ## 🚥 Getting Started ### Prerequisites - PHP 8.2+ - Composer - MySQL/MariaDB server ### Installation 1. Install dependencies: ```bash composer install ``` 2. Configure environment: ```bash cp .env.example .env php artisan key:generate ``` 3. Update `.env` with your database credentials: ```env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database DB_USERNAME=your_username DB_PASSWORD=your_password ``` 4. Run the development server: ```bash php artisan serve ``` ## 🔒 Security - All raw SQL execution is handled with caution. - File operations are restricted to specific storage directories. - Ensure the API is protected by authentication in production environments.