---
title: "Database configuration"
output: rmarkdown::html_vignette
author: "John J Aponte"
date:  2024-01-21
vignette: >
  %\VignetteIndexEntry{Database configuration}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  markdown: 
    wrap: 72
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

Repana package offers a simple methodology to keep definition of
database connection strings that works with a definition on the
`config.yml` file and the use of the function `get_con()` to be use in a
DBI compliant database.

By default in `config.yml` offers an in-memory connection to a duckdb
database with the following parameters:

```         
 defaultdb:
    package: duckdb
    dbconnect: duckdb
    read_only : FALSE     
```

The first element indicates the name of the package where the
`dbconnect()` function is located, and the dbconnect indicates the name of
the function used to get the connection. The rest of entries are
parameters for the connection and they vary from database to database.

If the user wants a more permanent database, should add the entry for the
parameter dbdir as for example:

```         
 defaultdb:
    package: duckdb
    dbconnect: duckdb
    read_only : FALSE 
    dbdir: database\study.db
```


Example to get connection to a `RSQLite` database

```         
  defaultdb:
    package: RSQLite
    dbconnect: SQLite
    dbname: database/results.db
```

Example to get a connection with a `RPostgres` database

```         
  defaultdb:
    package: RPostgres
    dbconnection: Postgres
    dbname: database
    host: localhost
    port: 5432
    user: username
    password: password
```

By default, the `get_con()` function reads the entry in  `defaultdb` but this
other entries can be specified with the parameter `configname` or even the file
where the configuration is saved with the parameter `file` if other file rather 
than the `config.yml` is used.