2025-09-21 22:11:56 -07:00
|
|
|
import os
|
2025-09-24 01:28:23 -07:00
|
|
|
import sys
|
2025-09-21 22:11:56 -07:00
|
|
|
|
|
|
|
|
from flask import Flask
|
2025-09-24 22:03:30 -07:00
|
|
|
from grung.db import GrungDB
|
2025-09-24 01:28:23 -07:00
|
|
|
from tinydb.storages import MemoryStorage
|
2025-09-21 22:11:56 -07:00
|
|
|
|
2025-09-24 22:03:30 -07:00
|
|
|
from ttfrog import schema
|
2025-09-21 22:11:56 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class ApplicationContext:
|
2025-09-24 01:28:23 -07:00
|
|
|
def __init__(self):
|
|
|
|
|
self.web: Flask = Flask("ttfrog")
|
2025-09-24 22:03:30 -07:00
|
|
|
self.db: GrungDB = None
|
2025-09-21 22:11:56 -07:00
|
|
|
self._initialized = False
|
|
|
|
|
|
2025-09-24 22:03:30 -07:00
|
|
|
def initialize(self, db: GrungDB = None):
|
2025-09-21 22:11:56 -07:00
|
|
|
if not self._initialized:
|
2025-09-24 01:28:23 -07:00
|
|
|
self.web.config["SECRET_KEY"] = os.getenv("SECRET_KEY", "secret string")
|
2025-09-24 22:03:30 -07:00
|
|
|
if os.environ.get("TTFROG_IN_MEMORY_DB"):
|
|
|
|
|
self.db = GrungDB.with_schema(schema, storage=MemoryStorage)
|
|
|
|
|
else:
|
|
|
|
|
self.db = GrungDB.with_schema(schema, "ttfrog.db.json")
|
2025-09-24 01:28:23 -07:00
|
|
|
self._initialized = True
|
2025-09-21 22:11:56 -07:00
|
|
|
|
|
|
|
|
|
2025-09-24 01:28:23 -07:00
|
|
|
sys.modules[__name__] = ApplicationContext()
|