Skip to content

Commit 9ccf836

Browse files
authored
Merge pull request #20 from getmarkus/cm-branch-18
feat: add support for SQLite WAL mode and update config settings
2 parents da26bfd + b80c749 commit 9ccf836

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ Temporary Items
198198

199199
# SQLite database files
200200
*.db
201+
*.db-shm
202+
*.db-wal
201203
*.sqlite
202204
*.sqlite3
203205
*.sqlite-journal

app/resource_adapters/persistence/sqlmodel/database.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import Generator
22

33
from loguru import logger
4+
from sqlalchemy import text
45
from sqlalchemy.engine import Engine
56
from sqlmodel import Session, SQLModel, create_engine
67

@@ -25,6 +26,15 @@ def get_engine(database_url: str | None = None) -> Engine:
2526
database_url = settings.database_url
2627

2728
_engine = create_engine(database_url, echo=True)
29+
30+
# Enable WAL mode if configured
31+
if settings.sqlite_wal_mode and database_url.startswith("sqlite"):
32+
with _engine.connect() as conn:
33+
# https://www.sqlite.org/pragma.html
34+
conn.execute(text("PRAGMA journal_mode=WAL"))
35+
# conn.execute(text("PRAGMA synchronous=OFF"))
36+
logger.info("SQLite WAL mode enabled")
37+
2838
# Initialize database if using SQLModel
2939
if settings.execution_mode == "sqlmodel" and not settings.migrate_database:
3040
logger.info("Creating database tables...")

config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@ class Settings:
3939
backend_cors_origins: List[AnyHttpUrl]
4040
execution_mode: str
4141
env_smoke_test: str
42+
sqlite_wal_mode: bool = False

settings.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ database_url = "sqlite:///./issues.db"
44
migrate_database = false
55
execution_mode = "sqlmodel"
66
env_smoke_test = ""
7+
sqlite_wal_mode = false
78

89
# CORS Settings
910
backend_cors_origins = []

0 commit comments

Comments
 (0)