> For the complete documentation index, see [llms.txt](https://nas-3.gitbook.io/nasdatabase/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nas-3.gitbook.io/nasdatabase/vspomogatelnyi-instrumentarii/handler.md).

# Handler

### Связка баз данных

Порой может понадобится связать базы, например хранить ютуберов и ролики выложенные ими в разных базах. Для корректной работы может понадобится отслеживать изменения в обеих из баз. На такой случай был разработан Connector.&#x20;

> NASDataBaseAPI.Server.Data.DataBaseSettings.Connector

Для создания связи баз данных нужно создать экземпляр класс Connector. Далее, вызвать метод AddConectionByHandler и передать туда наследника класса Handler, который будет заниматься обработкой событий.&#x20;

> NASDataBaseAPI.Server.Data.DataBaseSettings.Handlers

Случайный пример:

<pre class="language-csharp"><code class="lang-csharp"><strong>//Создаем связь между DB1 И DB2
</strong>Connector Connector = new Connector(DB1, DB2);
//Создаем обработчик события
Connector.AddConectionByHandler(new CastomHandler());
</code></pre>

```csharp
class CastomHandler : Handler<DataBase>
{
    //Задаем то на что мы будем реагировать 
    public CastomHandler() : base(DataBaseEventType.AddData) { }
    
    //Отрабатывает на событие в DB1
    public override void Work(object v1, object v2)//sting[] data, int id
    {                                              //См. DataBase - Events
        var datas = v1 as string[];
        var ID = DB2.GetIDByParams(DB2[0], datas[0]);//Ищем данные в 0 колонне
        DB2.SetData(ID, datas[1], " ");//Изменяем данные по ID
    }
    
    //Вовремя удаления соединения можно сделать завершающие действия
    public override void OnDestory()
    {
            
    }
}
```

В приведенном примере создан CastomHandler который "как-то" реагирует на добавление данных в базу с именем DB1. Чтобы указать на какое событие реагировать  Handler, нужно во конструктор базавого класса передать DataBaseEventType.

> NASDataBaseAPI.Server.Data.DataBaseEventType

### BinaryConnector

Если вам нужно будет сделать связку и обрабатывать события сразу в двух БД, вы можете использовать этот класс. Его отличие в том, что он имеет две функции для добавления обработчика.&#x20;

&#x20;1\. AddLeftConectionByHandler - для DB1\
&#x20;2\. AddRightConectionByHandler - для DB2

```csharp
BinaryConnector binaryConnector = new BinaryConnector(DB1, DB2);

binaryConnector.AddLeftConectionByHandler(new CastomHandler1());
binaryConnector.AddRightConectionByHandler(new CastomHandler2());
```
