|
| 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]) |
0 commit comments