use name_or_id_clause in get_external_repos

This commit is contained in:
Mike McLean 2021-11-10 13:25:10 -05:00 committed by Tomas Kopecek
parent c87eba6bcd
commit bcf423362b
2 changed files with 14 additions and 62 deletions

View file

@ -3760,19 +3760,18 @@ def get_external_repos(info=None, url=None, event=None, queryOpts=None):
tables = ['external_repo']
joins = ['external_repo_config ON external_repo_id = id']
clauses = [eventCondition(event)]
values = {}
if info is not None:
if isinstance(info, str):
clauses.append('name = %(info)s')
elif isinstance(info, int):
clauses.append('id = %(info)i')
else:
raise koji.GenericError('Invalid type for lookup: %s' % type(info))
clause, c_values = name_or_id_clause(info, table='external_repo')
clauses.append(clause)
values.update(c_values)
if url:
clauses.append('url = %(url)s')
values['url'] = url
query = QueryProcessor(columns=fields, tables=tables,
joins=joins, clauses=clauses,
values=locals(), opts=queryOpts)
values=values, opts=queryOpts)
return query.execute()

View file

@ -17,15 +17,7 @@ class TestGetExternalRepos(DBQueryTestCase):
joins=[
'external_repo_config ON external_repo_id = id'],
clauses=['(active = TRUE)'],
values={'clauses': ['(active = TRUE)'],
'event': None,
'fields': ['id', 'name', 'url'],
'info': None,
'joins': [
'external_repo_config ON external_repo_id = id'],
'queryOpts': None,
'tables': ['external_repo'],
'url': None},
values={},
opts={})
self.assertEqual(rv, [{'id': 1,
'name': 'ext_repo_1',
@ -46,19 +38,7 @@ class TestGetExternalRepos(DBQueryTestCase):
'(create_event <= 1000'
' AND ( revoke_event IS NULL'
' OR 1000 < revoke_event ))'],
values={'clauses': [
'(create_event <= 1000'
' AND ( revoke_event IS NULL'
' OR 1000 < revoke_event ))'],
'event': 1000,
'fields': ['id', 'name', 'url'],
'info': None,
'joins': [
'external_repo_config ON'
' external_repo_id = id'],
'queryOpts': None,
'tables': ['external_repo'],
'url': None},
values={},
opts={})
self.assertEqual(rv, [{'id': 1,
'name': 'ext_repo_1',
@ -75,17 +55,8 @@ class TestGetExternalRepos(DBQueryTestCase):
joins=[
'external_repo_config ON external_repo_id = id'],
clauses=['(active = TRUE)',
'name = %(info)s'],
values={'clauses': ['(active = TRUE)',
'name = %(info)s'],
'event': None,
'fields': ['id', 'name', 'url'],
'info': 'ext_repo_1',
'joins': [
'external_repo_config ON external_repo_id = id'],
'queryOpts': None,
'tables': ['external_repo'],
'url': None},
'(external_repo.name = %(external_repo_name)s)'],
values={'external_repo_name': 'ext_repo_1'},
opts={})
self.assertEqual(rv, [{'id': 1,
'name': 'ext_repo_1',
@ -102,17 +73,8 @@ class TestGetExternalRepos(DBQueryTestCase):
joins=[
'external_repo_config ON external_repo_id = id'],
clauses=['(active = TRUE)',
'id = %(info)i'],
values={'clauses': ['(active = TRUE)',
'id = %(info)i'],
'event': None,
'fields': ['id', 'name', 'url'],
'info': 1,
'joins': [
'external_repo_config ON external_repo_id = id'],
'queryOpts': None,
'tables': ['external_repo'],
'url': None},
'(external_repo.id = %(external_repo_id)s)'],
values={'external_repo_id': 1},
opts={})
self.assertEqual(rv, [{'id': 1,
'name': 'ext_repo_1',
@ -130,16 +92,7 @@ class TestGetExternalRepos(DBQueryTestCase):
'external_repo_config ON external_repo_id = id'],
clauses=['(active = TRUE)',
'url = %(url)s'],
values={'clauses': ['(active = TRUE)',
'url = %(url)s'],
'event': None,
'fields': ['id', 'name', 'url'],
'info': None,
'joins': [
'external_repo_config ON external_repo_id = id'],
'queryOpts': None,
'tables': ['external_repo'],
'url': 'http://example.com/repo/'},
values={'url': 'http://example.com/repo/'},
opts={})
self.assertEqual(rv, [{'id': 1,
'name': 'ext_repo_1',
@ -149,4 +102,4 @@ class TestGetExternalRepos(DBQueryTestCase):
info = {'info_key': 'info_value'}
with self.assertRaises(koji.GenericError) as cm:
kojihub.get_external_repos(info=info)
self.assertEqual("Invalid type for lookup: %s" % type(info), str(cm.exception))
self.assertEqual("Invalid name or id value: %s" % info, str(cm.exception))