> For the complete documentation index, see [llms.txt](https://timsixths-plugins.gitbook.io/minigameapi-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://timsixths-plugins.gitbook.io/minigameapi-docs/modules/internal-modules/sql-module.md).

# SQL Module

{% hint style="warning" %}
Module must be shaded to your JAR file
{% endhint %}

{% hint style="info" %}
{VERSION} - current version form GitHub releases section:\
<https://github.com/timsixth/MinigameAPI/releases>
{% endhint %}

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

<pre class="language-xml"><code class="lang-xml"><strong>&#x3C;repositories>
</strong>  &#x3C;repository>
   &#x3C;id>jitpack.io&#x3C;/id>
   &#x3C;url>https://jitpack.io&#x3C;/url>
  &#x3C;/repository>
&#x3C;/repositories>

&#x3C;dependency>
   &#x3C;groupId>com.github.timsixth.MinigameAPI&#x3C;/groupId>
   &#x3C;artifactId>sql-databases-support&#x3C;/artifactId>
   &#x3C;version>{VERSION}&#x3C;/version>
&#x3C;/dependency>
</code></pre>

{% endtab %}

{% tab title="Gradle" %}

```graphql
allprojects {
	repositories {
		maven { url 'https://jitpack.io' }
	}
}
  
 dependencies {
   implementation 'com.github.timsixth.MinigameAPI:sql-databases-support:{VERSION}'    
}
```

{% endtab %}
{% endtabs %}

### How to register SQL Module?

```java
//Use SQLLibraryConfiguration instend of LibraryConfiguration
    //Type list with SQLModule
    @Override
    protected LibraryConfiguration configure() {
        return new SQLLibraryConfiguration(this, getConfiguratorsInitializer(),
                () -> Collections.singletonList(new SQLModule())) //you can register modules before others
                .builder()
                .setGameManager(new MyGameManager(this, settings, messages))
                .build();
    }
```

with custom SQL module configuration (Optional but recommended)

```java
    @Override
    protected LibraryConfiguration configure() {
        return new SQLLibraryConfiguration(this, getConfiguratorsInitializer(),
                () -> Collections.singletonList(new SQLModule(new MySQLModuleConfigurator().configure()))) //you can register modules before others
                .builder()
                .setGameManager(new MyGameManager(this, settings, messages))
                .build();
    }
```

### How to define SQL Module configurator (Optional)?

```java
public class MySQLModuleConfigurator extends DefaultSQLModuleConfigurator {

    @Override
    public SQLModuleConfiguration configure() {
        return SQLModuleConfiguration.builder()
                .sqlDatabaseAdapter(new CustomSQLDatabaseAdapter()) //if you want to create your own SQL Database adapter
                .sqlDatabaseMigrator(new CustomDatabaseMigrator()) //if you want to create your own SQL Database migrator
                .build();
    }
}
```
