Map ToolDependency declaratively

This commit is contained in:
Sergey Golitsynskiy
2021-10-20 13:17:02 -04:00
parent a3d7a37c8e
commit 92b32bab81
3 changed files with 20 additions and 18 deletions
+17 -1
View File
@@ -9,6 +9,7 @@ from sqlalchemy import (
ForeignKey,
Integer,
Table,
TEXT,
)
from sqlalchemy.orm import (
registry,
@@ -16,6 +17,9 @@ from sqlalchemy.orm import (
)
from sqlalchemy.orm.decl_api import DeclarativeMeta
from galaxy.model.custom_types import (
TrimmedString
)
from galaxy.model.orm.now import now
from galaxy.util import asbool
from galaxy.util.bunch import Bunch
@@ -537,7 +541,19 @@ class RepositoryDependency(Base, _HasTable):
self.tool_shed_repository_id = tool_shed_repository_id
class ToolDependency(_HasTable):
class ToolDependency(Base, _HasTable):
__tablename__ = 'tool_dependency'
id = Column(Integer, primary_key=True)
create_time = Column(DateTime, default=now)
update_time = Column(DateTime, default=now, onupdate=now)
tool_shed_repository_id = Column(Integer, ForeignKey('tool_shed_repository.id'), index=True, nullable=False)
name = Column(TrimmedString(255))
version = Column(TEXT)
type = Column(TrimmedString(40))
status = Column(TrimmedString(255), nullable=False)
error_message = Column(TEXT)
# converting this one to Enum breaks the tool shed tests,
# don't know why though -John
installation_status = Bunch(NEVER_INSTALLED='Never installed',
+2 -15
View File
@@ -42,17 +42,6 @@ install_model.ToolShedRepository.table = Table("tool_shed_repository", metadata,
Column("status", TrimmedString(255)),
Column("error_message", TEXT))
install_model.ToolDependency.table = Table("tool_dependency", metadata,
Column("id", Integer, primary_key=True),
Column("create_time", DateTime, default=now),
Column("update_time", DateTime, default=now, onupdate=now),
Column("tool_shed_repository_id", Integer, ForeignKey("tool_shed_repository.id"), index=True, nullable=False),
Column("name", TrimmedString(255)),
Column("version", TEXT),
Column("type", TrimmedString(40)),
Column("status", TrimmedString(255), nullable=False),
Column("error_message", TEXT))
install_model.ToolVersion.table = Table("tool_version", metadata,
Column("id", Integer, primary_key=True),
Column("create_time", DateTime, default=now),
@@ -70,14 +59,12 @@ mapper_registry.map_imperatively(install_model.ToolShedRepository, install_model
primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.ToolVersion.table.c.tool_shed_repository_id),
backref='tool_shed_repository'),
tool_dependencies=relation(install_model.ToolDependency,
primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.ToolDependency.table.c.tool_shed_repository_id),
order_by=install_model.ToolDependency.table.c.name,
primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.ToolDependency.tool_shed_repository_id),
order_by=install_model.ToolDependency.name,
backref='tool_shed_repository'),
required_repositories=relation(install_model.RepositoryRepositoryDependencyAssociation,
primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.RepositoryRepositoryDependencyAssociation.tool_shed_repository_id))))
mapper_registry.map_imperatively(install_model.ToolDependency, install_model.ToolDependency.table)
mapper_registry.map_imperatively(install_model.ToolVersion, install_model.ToolVersion.table,
properties=dict(
parent_tool_association=relation(install_model.ToolVersionAssociation,
@@ -173,8 +173,7 @@ class TestRepositoryDependency(BaseTest):
class TestToolDependency(BaseTest):
def test_table(self, cls_):
assert cls_.table.name == 'tool_dependency'
# assert cls_.__tablename__ == 'tool_dependency' # TODO
assert cls_.__tablename__ == 'tool_dependency'
def test_columns(self, session, cls_, repository):
create_time = datetime.now()