feat(rpc): add "by" parameter - groups

Adding "by" parameter to search by "groups"

Signed-off-by: moson-mo <mo-son@mailbox.org>
This commit is contained in:
moson-mo 2022-11-07 21:41:42 +01:00
parent 50287cb066
commit 0583f30a53
No known key found for this signature in database
GPG key ID: 4A4760AB4EE15296
3 changed files with 41 additions and 2 deletions

View file

@ -3,7 +3,7 @@ from typing import Set
from sqlalchemy import and_, case, or_, orm
from aurweb import db, models
from aurweb.models import Package, PackageBase, User
from aurweb.models import Group, Package, PackageBase, User
from aurweb.models.dependency_type import (
CHECKDEPENDS_ID,
DEPENDS_ID,
@ -11,6 +11,7 @@ from aurweb.models.dependency_type import (
OPTDEPENDS_ID,
)
from aurweb.models.package_comaintainer import PackageComaintainer
from aurweb.models.package_group import PackageGroup
from aurweb.models.package_keyword import PackageKeyword
from aurweb.models.package_notification import PackageNotification
from aurweb.models.package_vote import PackageVote
@ -290,6 +291,7 @@ class RPCSearch(PackageSearch):
"provides": self._search_by_provides,
"conflicts": self._search_by_conflicts,
"replaces": self._search_by_replaces,
"groups": self._search_by_groups,
}
)
@ -320,6 +322,14 @@ class RPCSearch(PackageSearch):
)
return self.query
def _join_groups(self) -> orm.Query:
"""Join Package with PackageGroup and Group.
:returns: PackageGroup/Group-joined orm.Query
"""
self.query = self.query.join(PackageGroup).join(Group)
return self.query
def _search_by_depends(self, keywords: str) -> "RPCSearch":
self.query = self._join_depends(DEPENDS_ID).filter(
models.PackageDependency.DepName == keywords
@ -362,6 +372,11 @@ class RPCSearch(PackageSearch):
)
return self
def _search_by_groups(self, keywords: str) -> orm.Query:
self._join_groups()
self.query = self.query.filter(Group.Name == keywords)
return self
def search_by(self, by: str, keywords: str) -> "RPCSearch":
"""Override inherited search_by. In this override, we reduce the
scope of what we handle within this function. We do not set `by`

View file

@ -86,6 +86,7 @@ class RPC:
"provides",
"conflicts",
"replaces",
"groups",
}
# A mapping of by aliases.