Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| from datetime import datetime | |
| from pathlib import Path | |
| from peewee import ( | |
| AutoField, | |
| CharField, | |
| DateTimeField, | |
| ForeignKeyField, | |
| Model, | |
| SqliteDatabase, | |
| TextField, | |
| ) | |
| _DB_PATH = Path(__file__).resolve().parent.parent / "chat.db" | |
| _db = SqliteDatabase(_DB_PATH) | |
| class BaseModel(Model): | |
| class Meta: | |
| database = _db | |
| class User(BaseModel): | |
| id = AutoField() | |
| username = CharField(unique=True) | |
| class Conversation(BaseModel): | |
| id = AutoField() | |
| user = ForeignKeyField(User, backref="conversations") | |
| session_name = CharField() | |
| started_at = DateTimeField(default=datetime.utcnow) | |
| class Meta: | |
| indexes = ((("user", "session_name"), True),) | |
| class Message(BaseModel): | |
| id = AutoField() | |
| conversation = ForeignKeyField(Conversation, backref="messages") | |
| role = CharField() | |
| content = TextField() | |
| created_at = DateTimeField(default=datetime.utcnow) | |
| __all__ = ["_db", "User", "Conversation", "Message"] | |
| def init_db() -> None: | |
| """Initialise the database and create tables if they do not exist.""" | |
| if _db.is_closed(): | |
| _db.connect() | |
| _db.create_tables([User, Conversation, Message]) | |