Add missing relationship from orm models

This commit adds the missing relationship definitions to the ORM
models in subunit2sql.db.models. These relationships are key for
enabling the orm to build proper queries that span multiple tables.
We were seeing very poorly constructed queries without them in place.

Change-Id: I2cc2ead5a8148f564c075161e0d09e9083bcee8d
This commit is contained in:
Matthew Treinish
2015-11-25 16:57:13 -05:00
parent ac54f82a80
commit fc67d58310

View File

@@ -89,6 +89,12 @@ class TestRun(BASE, SubunitBase):
start_time_microsecond = sa.Column(sa.Integer(), default=0) start_time_microsecond = sa.Column(sa.Integer(), default=0)
stop_time = sa.Column(sa.DateTime()) stop_time = sa.Column(sa.DateTime())
stop_time_microsecond = sa.Column(sa.Integer(), default=0) stop_time_microsecond = sa.Column(sa.Integer(), default=0)
test = sa.orm.relationship(Test, backref=sa.orm.backref('test_run_test'),
foreign_keys=test_id,
primaryjoin=test_id == Test.id)
run = sa.orm.relationship(Run, backref=sa.orm.backref('test_run_run'),
foreign_keys=run_id,
primaryjoin=run_id == Run.id)
class RunMetadata(BASE, SubunitBase): class RunMetadata(BASE, SubunitBase):
@@ -99,6 +105,8 @@ class RunMetadata(BASE, SubunitBase):
key = sa.Column(sa.String(255)) key = sa.Column(sa.String(255))
value = sa.Column(sa.String(255)) value = sa.Column(sa.String(255))
run_id = sa.Column(sa.BigInteger, sa.ForeignKey('runs.id')) run_id = sa.Column(sa.BigInteger, sa.ForeignKey('runs.id'))
run = sa.orm.relationship(Run, backref='run', foreign_keys=run_id,
primaryjoin=run_id == Run.id)
class TestRunMetadata(BASE, SubunitBase): class TestRunMetadata(BASE, SubunitBase):
@@ -110,6 +118,10 @@ class TestRunMetadata(BASE, SubunitBase):
key = sa.Column(sa.String(255)) key = sa.Column(sa.String(255))
value = sa.Column(sa.String(255)) value = sa.Column(sa.String(255))
test_run_id = sa.Column(sa.BigInteger, sa.ForeignKey('test_runs.id')) test_run_id = sa.Column(sa.BigInteger, sa.ForeignKey('test_runs.id'))
test_run = sa.orm.relationship(TestRun,
backref=sa.orm.backref('test_run_meta'),
foreign_keys=test_run_id,
primaryjoin=test_run_id == TestRun.id)
class TestMetadata(BASE, SubunitBase): class TestMetadata(BASE, SubunitBase):
@@ -121,6 +133,8 @@ class TestMetadata(BASE, SubunitBase):
key = sa.Column(sa.String(255)) key = sa.Column(sa.String(255))
value = sa.Column(sa.String(255)) value = sa.Column(sa.String(255))
test_id = sa.Column(sa.BigInteger, sa.ForeignKey('tests.id')) test_id = sa.Column(sa.BigInteger, sa.ForeignKey('tests.id'))
test = sa.orm.relationship(Test, backref='test', foreign_keys=test_id,
primaryjoin=test_id == Test.id)
class Attachments(BASE, SubunitBase): class Attachments(BASE, SubunitBase):
@@ -131,3 +145,6 @@ class Attachments(BASE, SubunitBase):
test_run_id = sa.Column(sa.BigInteger) test_run_id = sa.Column(sa.BigInteger)
label = sa.Column(sa.String(255)) label = sa.Column(sa.String(255))
attachment = sa.Column(sa.LargeBinary()) attachment = sa.Column(sa.LargeBinary())
test_run = sa.orm.relationship(TestRun, backref='test_run_attach',
foreign_keys=test_run_id,
primaryjoin=test_run_id == TestRun.id)