-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathdatabase.py
More file actions
47 lines (38 loc) · 1001 Bytes
/
database.py
File metadata and controls
47 lines (38 loc) · 1001 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import logging
import aiosqlite
from config import settings
DB_PATH = settings.sqlite_path
logger = logging.getLogger(__name__)
CREATE_USERS_TABLE = """
CREATE TABLE IF NOT EXISTS users (
user_id TEXT PRIMARY KEY,
email TEXT,
first_name TEXT,
last_name TEXT,
metadata TEXT DEFAULT '{}',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
)
"""
CREATE_SESSIONS_TABLE = """
CREATE TABLE IF NOT EXISTS sessions (
session_id TEXT PRIMARY KEY,
user_id TEXT,
metadata TEXT DEFAULT '{}',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
)
"""
async def init_db():
async with aiosqlite.connect(DB_PATH) as db:
await db.execute(CREATE_USERS_TABLE)
await db.execute(CREATE_SESSIONS_TABLE)
await db.commit()
logger.info("SQLite DB initialized at %s", DB_PATH)
async def get_db():
db = await aiosqlite.connect(DB_PATH)
db.row_factory = aiosqlite.Row
try:
yield db
finally:
await db.close()