# &adminguide;

## Overview

The module is an implementation of the internal DB API v1 connector for SQlite 3 file.

## Dependencies

### &kamailio; Modules

The following modules must be loaded before this module:

- No dependencies on other &kamailio; modules.

### External Libraries or Applications

The following libraries or applications must be installed before running &kamailio; with this module loaded:

- SQlite 3 library - e.g., libsqlite3-0

- SQlite 3 devel library - to compile the module e.g. libsqlite3-dev

- SQlite 3 utilities - for kamdbctl e.g. sqlite3

## Parameters

### `db_set_readonly` (string)

This will set the db connection to "SQLITE_OPEN_READONLY", useful if another program is writing to the DB. The value is the full path to the sqlite file used for example in any db_url or sqlops/sqlcon

This parameter may be set multiple times to set many DB connections to readonly in the same configuration file.

By default all the db connections are using "SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE"

#### Set `db_set_readonly` parameter

    ...
    modparam("db_sqlite","db_set_readonly","/var/mydb.sqlite")
    modparam("sqlops","sqlcon","lrn=>sqlite:////var/mydb.sqlite") # Example if using the sqlops module
    ...

### `db_set_journal_mode` (string)

This will set the db connection journal mode, for the given connection. The value is the full path to the sqlite file used for example in any db_url or sqlops/sqlcon

Other journal mode are : DELETE | TRUNCATE | PERSIST | MEMORY | WAL | OFF

This parameter may be set multiple times to set many DB connections to readonly in the same configuration file.

By default all the db connections are using sqlite default journaling mode.

#### Set `db_set_journal_mode` parameter

    ...
    # In this example we are using Write-Ahead Logging in order to update the database from another process(external to Kamailio) without facing any locking.

    #!subst "!DB_FILE!/var/mydb.sqlite!"
    modparam("db_sqlite","db_set_readonly","DB_FILE")   # We are also opening the database in readonly
    modparam("db_sqlite","db_set_journal_mode","DB_FILE=WAL;")
    modparam("sqlops","sqlcon","lrn=>sqlite:///DB_FILE")
    ...

## Functions

NONE

## Usage

To use the module, first you have to load it in the &kamailio; configuration file.

### `loading the module` usage

    ...
    loadmodule "db_sqlite.so"
    ...

Then set the db_url (or similar) parameter of modules that have to use the SQLite database to driver part 'sqlite://', followed by the path to database file. For example:

### `db_url module parameter` usage

    ...
    modparam("auth_db", "db_url", "sqlite:///etc/kamailio/kamailio.db")
    ...

In the default config file, defined token DBURL can be updated like:

### `DBURL define` usage

    ...
    #!define DBURL "sqlite:///etc/kamailio/kamailio.db"
    ...