> 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/loaders/safeloader.md).

# SafeLoader

{% hint style="info" %}
NASDatabase.Server.Data.DatabaseSettings.Loaders.DatabaseLoader
{% endhint %}

Этот класс идет как основной класс взаимодействия с файлами(сохранение данных) в класс `Database`.  Он сразу же сохраняет данные, как только они поступят ему.

Основные его поля(их подробно разбирали в [`DatabaseManager`](/nasdatabase/database/class-databasemanager/filds.md)):

```csharp
public IEncoder _Encoder { get; private set; }
public IFileWorker FileSystem { get; private set; }
```

Методы класса:

* `AColumn[] LoadCluster(string Path, uint ClusterNumber, string DecodeKey)` - Загружает кластер, нужно понимать что если база данных хранится в одном файле он будет декодировать всю базу, а вернет только нужный кластер.
* `AddElement(DatabaseSettings DatabaseSettings, uint ClusterNumber, ItemData[] ItemDatas)` - Добавляет данные в нужный кластер. &#x20;
* `ReplayesElement(DatabaseSettings dataBaseSettings, uint ClusterNumber, ItemData[] ItemDatas)` - Заменяет данные в указанном кластере используя ID из первого элемента `ItemDatas`.
* `SaveAllCluster(DatabaseSettings DatabaseSettings, uint ClusterNumber, AColumn[] Column)` -  сохраняет целый кластер на основе полученных данных.&#x20;
