From aa96363e8ee67922f1411b63712a8acdfabb4cad Mon Sep 17 00:00:00 2001 From: Henrik Stranneheim Date: Thu, 9 Nov 2023 10:46:14 +0100 Subject: [PATCH 1/2] feat(refactor): Basehandle (#297) ### Changed - Remove store/api.py - Extract database initialization to corehandler - Rename Basehandler_2 to Basehandler --- tests/mocks/store_mock.py | 2 +- tests/store/utils/store_helper.py | 6 +++--- trailblazer/cli/core.py | 2 +- trailblazer/server/ext.py | 4 ++-- trailblazer/store/api.py | 19 ------------------- trailblazer/store/base.py | 5 ++++- trailblazer/store/core.py | 8 ++++++++ trailblazer/store/crud/create.py | 4 ++-- trailblazer/store/crud/delete.py | 4 ++-- trailblazer/store/crud/read.py | 4 ++-- trailblazer/store/crud/update.py | 4 ++-- 11 files changed, 27 insertions(+), 35 deletions(-) delete mode 100644 trailblazer/store/api.py diff --git a/tests/mocks/store_mock.py b/tests/mocks/store_mock.py index d1bd5bbd..255dead1 100644 --- a/tests/mocks/store_mock.py +++ b/tests/mocks/store_mock.py @@ -1,4 +1,4 @@ -from trailblazer.store.api import Store +from trailblazer.store.core import Store class MockStore(Store): diff --git a/tests/store/utils/store_helper.py b/tests/store/utils/store_helper.py index ddea4bdc..3553b49d 100644 --- a/tests/store/utils/store_helper.py +++ b/tests/store/utils/store_helper.py @@ -1,8 +1,8 @@ """Utility functions to simply add test data in a Trailblazer store.""" -from datetime import datetime, date +from datetime import date, datetime -from trailblazer.store.api import Store -from trailblazer.store.models import Info, User, Job +from trailblazer.store.core import Store +from trailblazer.store.models import Info, Job, User class StoreHelpers: diff --git a/trailblazer/cli/core.py b/trailblazer/cli/core.py index 2585bc37..00b28a65 100644 --- a/trailblazer/cli/core.py +++ b/trailblazer/cli/core.py @@ -14,7 +14,7 @@ from trailblazer.environ import environ_email from trailblazer.io.controller import ReadFile from trailblazer.models import Config -from trailblazer.store.api import Store +from trailblazer.store.core import Store from trailblazer.store.models import Analysis, User LOG = logging.getLogger(__name__) diff --git a/trailblazer/server/ext.py b/trailblazer/server/ext.py index f9ae121d..07099f99 100644 --- a/trailblazer/server/ext.py +++ b/trailblazer/server/ext.py @@ -1,10 +1,10 @@ from flask_alchy import Alchy -from trailblazer.store.api import BaseHandler +from trailblazer.store.core import CoreHandler from trailblazer.store.models import Model -class TrailblazerAlchy(Alchy, BaseHandler): +class TrailblazerAlchy(Alchy, CoreHandler): pass diff --git a/trailblazer/store/api.py b/trailblazer/store/api.py deleted file mode 100644 index 284a5e8c..00000000 --- a/trailblazer/store/api.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Store backend in Trailblazer.""" -import logging - -import alchy - -from trailblazer.store.core import CoreHandler -from trailblazer.store.models import Model - -LOG = logging.getLogger(__name__) - - -class BaseHandler(CoreHandler): - def setup(self): - self.create_all() - - -class Store(alchy.Manager, BaseHandler): - def __init__(self, uri: str): - super(Store, self).__init__(config=dict(SQLALCHEMY_DATABASE_URI=uri), Model=Model) diff --git a/trailblazer/store/base.py b/trailblazer/store/base.py index 73c83f67..b6a8846c 100644 --- a/trailblazer/store/base.py +++ b/trailblazer/store/base.py @@ -12,12 +12,15 @@ @dataclass -class BaseHandler_2: +class BaseHandler: """All models in one base class.""" def __init__(self): pass + def setup(self): + self.create_all() + def get_query(self, table: Type[Model]) -> Query: """Return a query for the given table.""" return self.query(table) diff --git a/trailblazer/store/core.py b/trailblazer/store/core.py index 3fa8f888..8bc715e7 100644 --- a/trailblazer/store/core.py +++ b/trailblazer/store/core.py @@ -1,7 +1,10 @@ +import alchy + from trailblazer.store.crud.create import CreateHandler from trailblazer.store.crud.delete import DeleteHandler from trailblazer.store.crud.read import ReadHandler from trailblazer.store.crud.update import UpdateHandler +from trailblazer.store.models import Model class CoreHandler( @@ -14,3 +17,8 @@ class CoreHandler( def __init__(self): pass + + +class Store(alchy.Manager, CoreHandler): + def __init__(self, uri: str): + super(Store, self).__init__(config=dict(SQLALCHEMY_DATABASE_URI=uri), Model=Model) diff --git a/trailblazer/store/crud/create.py b/trailblazer/store/crud/create.py index a3e80aaa..198bc2ad 100644 --- a/trailblazer/store/crud/create.py +++ b/trailblazer/store/crud/create.py @@ -1,11 +1,11 @@ from datetime import datetime from trailblazer.constants import TrailblazerStatus -from trailblazer.store.base import BaseHandler_2 +from trailblazer.store.base import BaseHandler from trailblazer.store.models import Analysis, User -class CreateHandler(BaseHandler_2): +class CreateHandler(BaseHandler): """Class for creating items in the database.""" def add_pending_analysis( diff --git a/trailblazer/store/crud/delete.py b/trailblazer/store/crud/delete.py index 83d7d913..3f64cf6b 100644 --- a/trailblazer/store/crud/delete.py +++ b/trailblazer/store/crud/delete.py @@ -3,13 +3,13 @@ from trailblazer.constants import TrailblazerStatus from trailblazer.exc import MissingAnalysis, TrailblazerError -from trailblazer.store.base import BaseHandler_2 +from trailblazer.store.base import BaseHandler from trailblazer.store.models import Analysis LOG = logging.getLogger(__name__) -class DeleteHandler(BaseHandler_2): +class DeleteHandler(BaseHandler): """Class for deleting items in the database.""" def delete_analysis_jobs(self, analysis: Analysis) -> None: diff --git a/trailblazer/store/crud/read.py b/trailblazer/store/crud/read.py index f70ef0af..dd462816 100644 --- a/trailblazer/store/crud/read.py +++ b/trailblazer/store/crud/read.py @@ -5,7 +5,7 @@ from sqlalchemy.orm import Query from trailblazer.constants import TrailblazerStatus -from trailblazer.store.base import BaseHandler_2 +from trailblazer.store.base import BaseHandler from trailblazer.store.filters.analyses_filters import ( AnalysisFilter, apply_analysis_filter, @@ -15,7 +15,7 @@ from trailblazer.store.models import Analysis, Job, User -class ReadHandler(BaseHandler_2): +class ReadHandler(BaseHandler): """Class for reading items in the database.""" def get_nr_jobs_with_status_per_category( diff --git a/trailblazer/store/crud/update.py b/trailblazer/store/crud/update.py index b31c826a..9055a736 100644 --- a/trailblazer/store/crud/update.py +++ b/trailblazer/store/crud/update.py @@ -14,13 +14,13 @@ from trailblazer.apps.tower.api import TowerAPI, get_tower_api from trailblazer.constants import SlurmJobStatus, TrailblazerStatus, WorkflowManager from trailblazer.exc import MissingAnalysis, TrailblazerError -from trailblazer.store.base import BaseHandler_2 +from trailblazer.store.base import BaseHandler from trailblazer.store.models import Analysis, Job, User LOG = logging.getLogger(__name__) -class UpdateHandler(BaseHandler_2): +class UpdateHandler(BaseHandler): """Class for updating items in the database.""" def update_analysis_jobs(self, analysis: Analysis, jobs: List[dict]) -> None: From 7297e83aef35f59fc0341bb0e8756fc220fd2e25 Mon Sep 17 00:00:00 2001 From: Clinical Genomics Bot Date: Thu, 9 Nov 2023 09:46:39 +0000 Subject: [PATCH 2/2] =?UTF-8?q?Bump=20version:=2019.0.1=20=E2=86=92=2019.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 8254cbe3..8d6f5cac 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 19.0.1 +current_version = 19.0.2 commit = True tag = True tag_name = {new_version} diff --git a/setup.py b/setup.py index 8d90f328..e7fa7a7f 100644 --- a/setup.py +++ b/setup.py @@ -52,7 +52,7 @@ def parse_reqs(req_path="./requirements.txt"): setup( name=NAME, - version="19.0.1", + version="19.0.2", description=DESCRIPTION, long_description=LONG_DESCRIPTION, long_description_content_type="text/markdown",