mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
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:
parent
50287cb066
commit
0583f30a53
3 changed files with 41 additions and 2 deletions
|
@ -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`
|
||||
|
|
|
@ -86,6 +86,7 @@ class RPC:
|
|||
"provides",
|
||||
"conflicts",
|
||||
"replaces",
|
||||
"groups",
|
||||
}
|
||||
|
||||
# A mapping of by aliases.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue