#include #include int init_db(void); void kore_parent_configure(int, char **); static const char *database = "db"; /* Let kore handle the default option parsing. */ void kore_parent_configure(int argc, char **argv) { init_db(); kore_default_getopt(argc, argv); } int init_db(void) { int err = 0; 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 { const char *host = "host=localhost "; 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 { const char *port = "port=5432 "; 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 { const char *user = "user=clog "; 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 { const char *dbname = "dbname=clog "; kore_buf_append(pg_config_buf, dbname, strlen(dbname)); } // FIXME: Should be configurable. const char *sslmode = "sslmode=disable "; kore_buf_append(pg_config_buf, sslmode, strlen(sslmode)); // Register the database const char *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; }