diff --git a/backend/src/config/config.py b/backend/src/config/config.py index 98fb96104..5154c3a55 100644 --- a/backend/src/config/config.py +++ b/backend/src/config/config.py @@ -16,7 +16,6 @@ DEFAULT_PATH_COVER_L: str = f"/assets/library/resources/default/cover_l.png" DEFAULT_URL_COVER_S: str = "https://images.igdb.com/igdb/image/upload/t_cover_small/nocover.png" DEFAULT_PATH_COVER_S: str = f"/assets/library/resources/default/cover_s.png" - # IGDB CLIENT_ID: str = os.getenv('CLIENT_ID') CLIENT_SECRET: str = os.getenv('CLIENT_SECRET') @@ -29,4 +28,15 @@ DB_PORT: int = int(os.getenv('DB_PORT')) DB_ROOT_PASSWD: str = os.getenv('DB_ROOT_PASSWD') DB_USER: str = os.getenv('DB_USER') DB_PASSWD: str = os.getenv('DB_PASSWD') -DB_NAME: str = 'romm' \ No newline at end of file +DB_NAME: str = 'romm' + +# DB DRIVERS +SQLITE_PATH: str = f"{LIBRARY_BASE_PATH}/database" +if not os.path.exists(SQLITE_PATH): os.makedirs(SQLITE_PATH) +ROMM_DB_DRIVER: str = os.getenv('ROMM_DB_DRIVER', 'sqlite') +DB_DRIVERS: dict = { + 'mariadb': f"mariadb+mariadbconnector://{DB_USER}:{DB_PASSWD}@{DB_HOST}:{DB_PORT}/{DB_NAME}", + 'sqlite': f"sqlite:////{SQLITE_PATH}/romm.db" +} + +RESERVED_FOLDERS: list = ['resources', 'database'] diff --git a/backend/src/models/base.py b/backend/src/models/base.py index a20771f83..32bb68fd2 100644 --- a/backend/src/models/base.py +++ b/backend/src/models/base.py @@ -2,10 +2,9 @@ from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker -from config.config import DB_HOST, DB_PORT, DB_USER, DB_PASSWD, DB_NAME - +from config.config import ROMM_DB_DRIVER, DB_DRIVERS BaseModel = declarative_base() -engine = create_engine(f"mariadb+mariadbconnector://{DB_USER}:{DB_PASSWD}@{DB_HOST}:{DB_PORT}/{DB_NAME}", pool_pre_ping=True) -Session = sessionmaker(bind=engine, expire_on_commit=False) \ No newline at end of file +engine = create_engine(DB_DRIVERS[ROMM_DB_DRIVER], pool_pre_ping=True) +Session = sessionmaker(bind=engine, expire_on_commit=False) diff --git a/backend/src/utils/fs.py b/backend/src/utils/fs.py index 4eb7ddd95..eaba7e0fa 100644 --- a/backend/src/utils/fs.py +++ b/backend/src/utils/fs.py @@ -5,7 +5,7 @@ from pathlib import Path import requests from fastapi import HTTPException -from config.config import LIBRARY_BASE_PATH, DEFAULT_URL_LOGO, DEFAULT_URL_COVER_L, DEFAULT_PATH_COVER_L, DEFAULT_URL_COVER_S, DEFAULT_PATH_COVER_S +from config.config import LIBRARY_BASE_PATH, RESERVED_FOLDERS, DEFAULT_URL_LOGO, DEFAULT_URL_COVER_L, DEFAULT_PATH_COVER_L, DEFAULT_URL_COVER_S, DEFAULT_PATH_COVER_S from logger.logger import log @@ -73,7 +73,7 @@ def get_platforms() -> list: """ try: platforms: list[str] = list(os.walk(LIBRARY_BASE_PATH))[0][1] - if 'resources' in platforms: platforms.remove('resources') + [platforms.remove(reserved) for reserved in RESERVED_FOLDERS] log.info(f"filesystem platforms found: {platforms}") return platforms except IndexError: diff --git a/docker/docker-compose.example.yml b/docker/docker-compose.example.yml index 4db42c199..ba5cd3c7d 100644 --- a/docker/docker-compose.example.yml +++ b/docker/docker-compose.example.yml @@ -4,10 +4,11 @@ services: image: 'zurdi15/romm:latest' container_name: romm environment: - - DB_HOST=romm_db - - DB_PORT=3306 - - DB_USER=romm-user - - DB_PASSWD=change-me + - ROMM_DB_DRIVER="mariadb" # This variable can be set as: mariadb | sqlite. If it is not defined, sqlite will be the database by default + - DB_HOST=romm_db # Only if ROMM_DB_DRIVER='mariadb' + - DB_PORT=3306 # Only if ROMM_DB_DRIVER='mariadb' + - DB_USER=romm-user # Only if ROMM_DB_DRIVER='mariadb' + - DB_PASSWD=change-me # Only if ROMM_DB_DRIVER='mariadb' - CLIENT_ID= - CLIENT_SECRET= - STEAMGRIDDB_API_KEY=WIP @@ -19,6 +20,7 @@ services: - romm_db restart: "unless-stopped" + # Only if ROMM_DB_DRIVER='mariadb' romm_db: image: lscr.io/linuxserver/mariadb:latest container_name: romm_db