db.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import os
  2. import logging
  3. import json
  4. from peewee import *
  5. from peewee_migrate import Router
  6. from playhouse.db_url import connect
  7. from apps.webui.internal.wrappers import PeeweeConnectionState, register_peewee_databases
  8. from config import SRC_LOG_LEVELS, DATA_DIR, DATABASE_URL, BACKEND_DIR
  9. log = logging.getLogger(__name__)
  10. log.setLevel(SRC_LOG_LEVELS["DB"])
  11. class JSONField(TextField):
  12. def db_value(self, value):
  13. return json.dumps(value)
  14. def python_value(self, value):
  15. if value is not None:
  16. return json.loads(value)
  17. register_peewee_databases()
  18. # Check if the file exists
  19. if os.path.exists(f"{DATA_DIR}/ollama.db"):
  20. # Rename the file
  21. os.rename(f"{DATA_DIR}/ollama.db", f"{DATA_DIR}/webui.db")
  22. log.info("Database migrated from Ollama-WebUI successfully.")
  23. else:
  24. pass
  25. DB = connect(DATABASE_URL)
  26. DB._state = PeeweeConnectionState()
  27. log.info(f"Connected to a {DB.__class__.__name__} database.")
  28. router = Router(
  29. DB,
  30. migrate_dir=BACKEND_DIR / "apps" / "webui" / "internal" / "migrations",
  31. logger=log,
  32. )
  33. router.run()
  34. DB.connect(reuse_if_open=True)