#include #include int init_db(void); void kore_parent_configure(int, char **); static const char *database = "db"; void kore_parent_configure(int argc, char **argv) { int err = 0; kore_default_getopt(argc, argv); err = init_db(); if (err != KORE_RESULT_OK) { kore_log(LOG_ERR, "Error registering the database."); exit(1); } } int init_db(void) { int err = 0; const char *pg_config = NULL; const char *host = "host=localhost "; const char *port = "port=5432 "; const char *user = "user=clog "; const char *dbname = "dbname=clog "; // FIXME: Should be configurable. const char *sslmode = "sslmode=disable "; const char *env = NULL; struct kore_buf *pg_config_buf = kore_buf_alloc(0); // Parse env vars and build PostgreSQL config string env = getenv("POSTGRES_HOST"); if (env) kore_buf_appendf(pg_config_buf, "host=%s ", env); else kore_buf_append(pg_config_buf, host, strlen(host)); env = getenv("POSTGRES_PORT"); if (env) kore_buf_appendf(pg_config_buf, "port=%s ", env); else kore_buf_append(pg_config_buf, port, strlen(port)); env = getenv("POSTGRES_USER"); if (env) kore_buf_appendf(pg_config_buf, "user=%s ", env); else kore_buf_append(pg_config_buf, user, strlen(user)); env = getenv("POSTGRES_PASSWORD"); if (env) kore_buf_appendf(pg_config_buf, "password=%s ", env); env = getenv("POSTGRES_DBNAME"); if (env) kore_buf_appendf(pg_config_buf, "user=%s ", env); else kore_buf_append(pg_config_buf, dbname, strlen(dbname)); kore_buf_append(pg_config_buf, sslmode, strlen(sslmode)); // Register the database pg_config = kore_buf_stringify(pg_config_buf, NULL); kore_log(LOG_INFO, "%s", pg_config); err = kore_pgsql_register( database, pg_config ); kore_buf_free(pg_config_buf); return err; }