PHPackages                             mcrm/laravel-connection-storage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. mcrm/laravel-connection-storage

ActiveLibrary[Database &amp; ORM](/categories/database)

mcrm/laravel-connection-storage
===============================

Flexible Laravel package for managing external database connections with Redis cache and HTTP API fallback. Supports customizable DTOs and multiple connection types for microservices architecture.

0.5.6(1mo ago)2267MITPHPPHP ^8.1

Since Jun 9Pushed 1mo agoCompare

[ Source](https://github.com/SultanovAziz/mcrm-laravel-storage)[ Packagist](https://packagist.org/packages/mcrm/laravel-connection-storage)[ RSS](/packages/mcrm-laravel-connection-storage/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (27)Versions (18)Used By (0)

Laravel Connection Storage
==========================

[](#laravel-connection-storage)

Flexible Laravel package for managing external database connections with Redis cache and HTTP API fallback. Supports customizable DTOs and multiple connection types for microservices architecture.

Features
--------

[](#features)

- ✅ **Redis Caching** - automatic connection data caching
- ✅ **HTTP API Integration** - external API data retrieval
- ✅ **Connection Validation** - database availability checks
- ✅ **Notification System** - automatic error notifications
- ✅ **Connection Blocking** - temporary blocking after failures
- ✅ **Flexible DTOs** - customizable data classes for different projects
- ✅ **Multi-service Architecture** - service-specific data extraction support

Installation
------------

[](#installation)

### 1. Install Package

[](#1-install-package)

```
composer require mcrm/laravel-connection-storage
```

### 2. Publish Configuration (REQUIRED)

[](#2-publish-configuration-required)

```
php artisan vendor:publish --tag=connection-storage-config
```

This command will copy the configuration file to `config/connection-storage.php` in your project.

### 3. Environment Variables Setup

[](#3-environment-variables-setup)

Add to your `.env` file:

```
# Cache settings
CONNECTION_STORAGE_CACHE_STORE=redis
CONNECTION_STORAGE_CACHE_TTL=86400
CONNECTION_STORAGE_CACHE_PREFIX=connection_data_

# External API settings
CONNECTION_STORAGE_API_URL=http://your-api-server.com
CONNECTION_STORAGE_API_TIMEOUT=10
CONNECTION_STORAGE_NOTIFICATION_URL=http://your-api-server.com/api/connection-issues
CONNECTION_STORAGE_API_TOKEN=your-api-token

# DTO settings (if using custom DTO)
CONNECTION_STORAGE_DTO_CLASS=App\\DTOs\\YourCustomConnectionDTO

# Service settings
CONNECTION_STORAGE_SERVICE_KEY=your_service_name
CONNECTION_STORAGE_SERVICE_NAME=your-service

# Validation settings
CONNECTION_STORAGE_VALIDATION_ENABLED=true
CONNECTION_STORAGE_VALIDATION_TIMEOUT=5
CONNECTION_STORAGE_BLOCK_DURATION=1800
CONNECTION_STORAGE_BLOCK_PREFIX=connection_block_

# Notification settings
CONNECTION_STORAGE_NOTIFICATIONS_ENABLED=true
CONNECTION_STORAGE_NOTIFICATIONS_TIMEOUT=10
CONNECTION_STORAGE_NOTIFICATIONS_RETRY=false
```

Basic Usage
-----------

[](#basic-usage)

### Getting Connection Data

[](#getting-connection-data)

```
use Mcrm\LaravelConnectionStorage\Interfaces\ConnectionDataProviderInterface;

class DatabaseConnectionManager
{
    public function __construct(
        private ConnectionDataProviderInterface $connectionProvider
    ) {}

    public function getConnection(string $boxName): ?array
    {
        $connectionData = $this->connectionProvider->getConnectionData($boxName);

        if ($connectionData === null) {
            return null;
        }

        return $connectionData->getConnectionConfig('db');
    }
}
```

### Manual Data Caching

[](#manual-data-caching)

```
use Mcrm\LaravelConnectionStorage\Interfaces\ConnectionDataProviderInterface;
use App\DTOs\YourCustomConnectionDTO;

$connectionData = YourCustomConnectionDTO::fromArray([
    'db' => [
        'host' => 'localhost',
        'database' => 'your_db',
        'username' => 'user',
        'password' => 'pass'
    ]
]);

$this->connectionProvider->cacheConnectionData('box-name', $connectionData);
```

Creating Custom DTO
-------------------

[](#creating-custom-dto)

### 1. Create Your DTO Class

[](#1-create-your-dto-class)

```
