db.py 1.2 KB

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