Skip to content

Commit 89270d3

Browse files
committed
db: simplify API (exec/query/transaction), add env-based config and full HTTP showcase
2 parents ad198bd + 839b1b4 commit 89270d3

14 files changed

Lines changed: 897 additions & 92 deletions

examples/.env.example

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# =========================================================
2+
# Vix HTTP + DB showcase
3+
# Copy this file to ".env"
4+
# =========================================================
5+
6+
# Database engine:
7+
# - sqlite
8+
# - mysql
9+
DATABASE_ENGINE=sqlite
10+
11+
# SQLite configuration
12+
DATABASE_SQLITE_PATH=vix.db
13+
14+
# MySQL configuration
15+
# Used only if DATABASE_ENGINE=mysql
16+
DATABASE_DEFAULT_HOST=127.0.0.1
17+
DATABASE_DEFAULT_PORT=3306
18+
DATABASE_DEFAULT_USER=root
19+
DATABASE_DEFAULT_PASSWORD=
20+
DATABASE_DEFAULT_NAME=vix
21+
22+
# Server configuration
23+
SERVER_PORT=8080
24+
SERVER_REQUEST_TIMEOUT=2000
25+
SERVER_IO_THREADS=0
26+
SERVER_SESSION_TIMEOUT_SEC=20
27+
SERVER_BENCH_MODE=false
28+
29+
# Logging configuration
30+
LOGGING_ASYNC=true
31+
LOGGING_QUEUE_MAX=20000
32+
LOGGING_DROP_ON_OVERFLOW=true
33+
34+
# WAF configuration
35+
WAF_MODE=basic
36+
WAF_MAX_TARGET_LEN=4096
37+
WAF_MAX_BODY_BYTES=1048576

examples/basic_connect.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,7 @@ int main()
77
{
88
auto db = vix::db::Database::sqlite("vix.db");
99

10-
auto conn = db.pool().acquire();
11-
if (!conn->ping())
12-
{
13-
std::cerr << "DB ping failed\n";
14-
return 1;
15-
}
10+
db.exec("CREATE TABLE IF NOT EXISTS healthcheck (id INTEGER PRIMARY KEY)");
1611

1712
std::cout << "DB connected successfully\n";
1813
return 0;

examples/config/.env.example

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
DATABASE_ENGINE=sqlite
2+
DATABASE_SQLITE_PATH=vix.db
3+
4+
# MySQL alternative
5+
# DATABASE_ENGINE=mysql
6+
# DATABASE_DEFAULT_HOST=127.0.0.1
7+
# DATABASE_DEFAULT_PORT=3306
8+
# DATABASE_DEFAULT_USER=root
9+
# DATABASE_DEFAULT_PASSWORD=
10+
# DATABASE_DEFAULT_NAME=vixdb
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include <iostream>
2+
#include <vix/config/Config.hpp>
3+
#include <vix/db/Database.hpp>
4+
5+
int main()
6+
{
7+
try
8+
{
9+
auto &cfg = vix::config::Config::getInstance(".env");
10+
11+
std::cout << "database.engine = "
12+
<< cfg.getString("database.engine", "sqlite") << "\n";
13+
14+
std::cout << "database.default.host = "
15+
<< cfg.getString("database.default.host", "127.0.0.1") << "\n";
16+
17+
std::cout << "database.default.port = "
18+
<< cfg.getInt("database.default.port", 3306) << "\n";
19+
20+
std::cout << "database.default.user = "
21+
<< cfg.getString("database.default.user", "root") << "\n";
22+
23+
std::cout << "database.default.name = "
24+
<< cfg.getString("database.default.name", "") << "\n";
25+
26+
auto db = vix::db::Database::from_env(".env");
27+
28+
db.exec(
29+
"CREATE TABLE IF NOT EXISTS users ("
30+
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
31+
"name TEXT NOT NULL)");
32+
33+
db.exec("INSERT INTO users (name) VALUES (?)", "Gaspard");
34+
35+
auto rows = db.query("SELECT id, name FROM users");
36+
37+
while (rows->next())
38+
{
39+
const auto &row = rows->row();
40+
std::cout << row.getInt64(0) << " - " << row.getString(1) << "\n";
41+
}
42+
43+
return 0;
44+
}
45+
catch (const std::exception &e)
46+
{
47+
std::cerr << "Config/DB error: " << e.what() << "\n";
48+
return 1;
49+
}
50+
}

0 commit comments

Comments
 (0)