fix circular import + migration 15 downgrade

This commit is contained in:
Georges-Antoine Assi
2024-01-18 13:44:07 -05:00
parent 624b451a8c
commit 86b55c68a3
17 changed files with 75 additions and 38 deletions

View File

@@ -27,8 +27,6 @@ SIZE_UNIT_TO_BYTES = {
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
# Drop platform_slug foreign key on all tables
with op.batch_alter_table("states", schema=None) as batch_op:
batch_op.drop_constraint("states_ibfk_1", type_="foreignkey")
@@ -101,14 +99,9 @@ def upgrade() -> None:
with op.batch_alter_table("roms", schema=None) as batch_op:
batch_op.drop_column("file_size")
batch_op.drop_column("file_size_units")
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table("platforms", schema=None) as batch_op:
batch_op.drop_column("id")
with op.batch_alter_table("roms", schema=None) as batch_op:
batch_op.add_column(
sa.Column("platform_slug", sa.String(length=50), nullable=False)
@@ -117,35 +110,71 @@ def downgrade() -> None:
batch_op.add_column(sa.Column("p_igdb_id", sa.String(length=10), nullable=True))
batch_op.add_column(sa.Column("p_sgdb_id", sa.String(length=10), nullable=True))
batch_op.drop_constraint("roms_platforms_FK", type_="foreignkey")
batch_op.create_foreign_key(None, "platforms", ["platform_slug"], ["slug"])
batch_op.drop_column("platform_id")
batch_op.drop_column("file_size_bytes")
batch_op.add_column(
sa.Column("file_size_units", sa.String(length=10), nullable=False)
)
batch_op.add_column(sa.Column("file_size", sa.Float(), nullable=False))
op.execute(
"update roms inner join platforms on roms.platform_id = platforms.id set roms.platform_slug = platforms.slug"
)
with op.batch_alter_table("saves", schema=None) as batch_op:
batch_op.add_column(
sa.Column("platform_slug", sa.String(length=50), nullable=False)
)
batch_op.create_foreign_key(
None, "platforms", ["platform_slug"], ["slug"], ondelete="CASCADE"
)
op.execute(
"update saves inner join roms on saves.rom_id = roms.id set saves.platform_slug = roms.platform_slug"
)
with op.batch_alter_table("screenshots", schema=None) as batch_op:
batch_op.add_column(
sa.Column("platform_slug", sa.String(length=50), nullable=True)
)
batch_op.create_foreign_key(
None, "platforms", ["platform_slug"], ["slug"], ondelete="CASCADE"
)
op.execute(
"update screenshots inner join roms on screenshots.rom_id = roms.id set screenshots.platform_slug = roms.platform_slug"
)
with op.batch_alter_table("states", schema=None) as batch_op:
batch_op.add_column(
sa.Column("platform_slug", sa.String(length=50), nullable=False)
)
batch_op.create_foreign_key(
None, "platforms", ["platform_slug"], ["slug"], ondelete="CASCADE"
op.execute(
"update states inner join roms on states.rom_id = roms.id set states.platform_slug = roms.platform_slug"
)
with op.batch_alter_table("platforms", schema=None) as batch_op:
batch_op.drop_column("id")
batch_op.create_primary_key(constraint_name=None, columns=["slug"])
batch_op.add_column(
sa.Column("n_roms", sa.Integer(), autoincrement=False, nullable=True)
)
# ### end Alembic commands ###
with op.batch_alter_table("saves", schema=None) as batch_op:
batch_op.create_foreign_key(
"saves_ibfk_1", "platforms", ["platform_slug"], ["slug"], ondelete="CASCADE"
)
with op.batch_alter_table("screenshots", schema=None) as batch_op:
batch_op.create_foreign_key(
"screenshots_ibfk_1",
"platforms",
["platform_slug"],
["slug"],
ondelete="CASCADE",
)
with op.batch_alter_table("states", schema=None) as batch_op:
batch_op.create_foreign_key(
"states_ibfk_1", "platforms", ["platform_slug"], ["slug"], ondelete="CASCADE"
)
with op.batch_alter_table("roms", schema=None) as batch_op:
batch_op.create_foreign_key(
"fk_platform_roms", "platforms", ["platform_slug"], ["slug"], ondelete="CASCADE"
)
batch_op.drop_column("platform_id")

View File

@@ -0,0 +1 @@
ini

View File

@@ -1,6 +1,7 @@
from decorators.database import begin_session
from handler.db_handler import DBHandler
from models import Platform, Rom
from models.platform import Platform
from models.rom import Rom
from sqlalchemy import delete, func, or_, select
from sqlalchemy.orm import Session

View File

@@ -1,6 +1,6 @@
from decorators.database import begin_session
from handler.db_handler import DBHandler
from models import Rom
from models.rom import Rom
from sqlalchemy import and_, delete, func, select, update
from sqlalchemy.orm import Session

View File

@@ -1,6 +1,6 @@
from decorators.database import begin_session
from handler.db_handler import DBHandler
from models import Save
from models.assets import Save
from sqlalchemy import and_, delete, select, update
from sqlalchemy.orm import Session

View File

@@ -1,6 +1,6 @@
from decorators.database import begin_session
from handler.db_handler import DBHandler
from models import Screenshot
from models.assets import Screenshot
from sqlalchemy import delete, select, update
from sqlalchemy.orm import Session

View File

@@ -1,6 +1,6 @@
from decorators.database import begin_session
from handler.db_handler import DBHandler
from models import State
from models.assets import State
from sqlalchemy import and_, delete, select, update
from sqlalchemy.orm import Session

View File

@@ -1,6 +1,8 @@
from decorators.database import begin_session
from handler.db_handler import DBHandler
from models import Platform, Rom, Save, Screenshot, State
from models.platform import Platform
from models.rom import Rom
from models.assets import Save, Screenshot, State
from sqlalchemy import func, select
from sqlalchemy.orm import Session

View File

@@ -1,6 +1,6 @@
from decorators.database import begin_session
from handler.db_handler import DBHandler
from models import Role, User
from models.user import Role, User
from sqlalchemy import delete, select, update
from sqlalchemy.orm import Session

View File

@@ -1,11 +1,13 @@
import os
from typing import Any
import emoji
from config.config_manager import config_manager as cm
from handler import fsasseth, igdbh, fsresourceh, fsromh, dbplatformh
from logger.logger import log
from models import Platform, Rom, Save, Screenshot, State
from models.platform import Platform
from models.rom import Rom
from models.assets import Save, Screenshot, State
SWAPPED_PLATFORM_BINDINGS = dict(
(v, k) for k, v in cm.config.PLATFORMS_BINDING.items()

View File

@@ -4,7 +4,10 @@ from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config.config_manager import ConfigManager
from models import Platform, Rom, User, Save, State, Screenshot
from models.platform import Platform
from models.rom import Rom
from models.user import User
from models.assets import Save, State, Screenshot
from models.user import Role
from handler import dbuserh, dbplatformh, dbromh, dbsaveh, dbstateh, authh, dbscreenshotsh

View File

@@ -1,8 +1,10 @@
from sqlalchemy.exc import IntegrityError
# from handler.db_handler import DBHandler
from models import Platform, Rom, User, Save, State, Screenshot
from models.user import Role
from models.platform import Platform
from models.rom import Rom
from models.user import User, Role
from models.assets import Save, State, Screenshot
from handler import authh, dbplatformh, dbromh, dbuserh, dbsaveh, dbstateh, dbscreenshotsh

View File

@@ -1,4 +0,0 @@
from models.platform import Platform # noqa[401]
from models.rom import Rom # noqa[401]
from models.user import User, Role # noqa[401]
from models.assets import Save, State, Screenshot # noqa[401]

View File

@@ -1,4 +1,4 @@
from models import Save, State, Screenshot
from models.assets import Save, State, Screenshot
def test_save(save: Save):
assert save.full_path == "test_platform_slug/saves/test_emulator/test_save.sav"

View File

@@ -2,7 +2,7 @@ import pytest
from base64 import b64encode
from fastapi.exceptions import HTTPException
from models import User
from models.user import User
from handler import authh, oauthh, dbuserh
from handler.auth_handler import WRITE_SCOPES
from handler.auth_handler.hybrid_auth import HybridAuthBackend

View File

@@ -2,7 +2,8 @@ import pytest
from handler.scan_handler import scan_platform, scan_rom
from exceptions.fs_exceptions import RomsNotFoundException
from models import Platform, Rom
from models.platform import Platform
from models.rom import Rom
@pytest.mark.vcr()

View File

@@ -2,7 +2,7 @@ import pytest
from unittest.mock import patch
from handler import fsresourceh, fsplatformh, fsromh
from models import Platform
from models.platform import Platform
from config import DEFAULT_PATH_COVER_L, DEFAULT_PATH_COVER_S