Skip to content

Commit dda2149

Browse files
committed
setup peewee ORM
1 parent d7a2a1e commit dda2149

6 files changed

Lines changed: 53 additions & 1 deletion

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ cover/
6666
*.pot
6767

6868
local_settings.py
69+
*.sqlite
6970
*.sqlite3
7071
*.sqlite3-journal
7172

db/__init__.py

Whitespace-only changes.

db/models.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from datetime import UTC, datetime
2+
3+
import peewee
4+
from peewee import Model, SqliteDatabase
5+
6+
from src.settings import BASE_DIR
7+
8+
# SQLite may not be suited for production, but is
9+
# perfectly for the initial development phase
10+
db = SqliteDatabase(BASE_DIR / "db.sqlite3")
11+
12+
13+
class DbBaseModel(Model):
14+
created_at = peewee.DateTimeField(default=datetime.now(tz=UTC))
15+
updated_at = peewee.DateTimeField()
16+
17+
def save(self, *args, **kwargs):
18+
self.updated_at = datetime.now(tz=UTC)
19+
return super().save(*args, **kwargs)
20+
21+
class Meta:
22+
database = db
23+
24+
25+
class User(DbBaseModel):
26+
discord_id = peewee.IntegerField(primary_key=True)
27+
sith_id = peewee.IntegerField(null=True)
28+
username = peewee.CharField()
29+
30+
31+
class Club(DbBaseModel):
32+
name = peewee.CharField(max_length=64, unique=True)
33+
category_id = peewee.IntegerField(unique=True)
34+
sith_id = peewee.IntegerField(unique=True)
35+
president_role_id = peewee.IntegerField(unique=True)
36+
treasurer_role_id = peewee.IntegerField(unique=True)
37+
member_role_id = peewee.IntegerField(unique=True)
38+
former_member_role_id = peewee.IntegerField(unique=True)
39+
40+
41+
def init():
42+
db.create_tables([User, Club])

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ services:
22
discord:
33
build: .
44
volumes:
5-
- /data:/app/data
5+
- ./db.sqlite3:/app/db.sqlite3
66
- ./log:/app/log

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ requires-python = ">=3.12"
77
dependencies = [
88
"aiohttp>=3.13.0",
99
"discord-py[speed]>=2.6.4",
10+
"peewee>=3.18.2",
1011
"pydantic-settings>=2.11.0",
1112
"pydantic>=2.12.0",
1213
"pytz>=2025.2",

uv.lock

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)