# Storage

{% hint style="info" %}
At the moment Doddle only supports Postgres to store jobs, however, this will change in the future when other storage providers are added.
{% endhint %}

## Relational databases

Doddle uses MyBatis for interacting with relational databases.

To get started, install the SQL storage dependency

{% tabs %}
{% tab title="Maven" %}

```xml
<dependency>
     <groupId>dev.doddle</groupId>
     <artifactId>sql-storage</artifactId>
     <version>${doddle.version}</version>
</dependency>
```

{% endtab %}

{% tab title="Gradle" %}

{% endtab %}
{% endtabs %}

### Postgres

#### Provide the PostgreSQL dependency

{% tabs %}
{% tab title="Maven" %}

```markup
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>${postgres.version}</version>
</dependency>
```

{% endtab %}

{% tab title="Gradle" %}

{% endtab %}
{% endtabs %}

#### Create the storage provider

{% hint style="info" %}
The data source is an implementation of the `javax.sql.Datasource` interface.
{% endhint %}

```java
import dev.doddle.storage.common.StorageProvider;
import dev.doddle.storage.sql.PostgresStorageProvider;

final StorageProvider storageProvider = new PostgresStorageProvider(dataSource);
```

Creating a simple datasource (just for demo purposes)

```java
 final PGSimpleDataSource ds = new PGSimpleDataSource();
 ds.setServerNames(new String[]{"localhost"});
 ds.setDatabaseName("postgres");
 ds.setUser("postgres");
 ds.setPassword("postgres");
 return ds;
```

#### Populate the database

TODO - explain here

Now let's configure Doddle to use this storage provider!

####
