feat: add silent logs reload

This commit is contained in:
2025-07-07 17:02:08 +03:00
parent 471b1c1331
commit f2ea76aab9
5 changed files with 135 additions and 26 deletions

View File

@ -27,6 +27,9 @@ class LogsSearchSchema(PaginationSchema):
request log search schema
"""
head = fields.Boolean(metadata={
"description": "Return versions only without fetching logs themselves",
})
version = fields.String(metadata={
"description": "Package version to search",
"example": __version__,

View File

@ -17,7 +17,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import itertools
from aiohttp.web import Response, json_response
from dataclasses import replace
from typing import ClassVar
from ahriman.models.user_access import UserAccess
@ -28,7 +31,8 @@ from ahriman.web.views.status_view_guard import StatusViewGuard
class LogsView(StatusViewGuard, BaseView):
"""
""" else:
package logs web view
Attributes:
@ -66,5 +70,14 @@ class LogsView(StatusViewGuard, BaseView):
logs = self.service(package_base=package_base).package_logs_get(package_base, version, process, limit, offset)
head = self.request.query.get("head", "false")
# pylint: disable=protected-access
if self.configuration._convert_to_boolean(head): # type: ignore[attr-defined]
# logs should be sorted already
logs = [
replace(next(log_records), message="") # remove messages
for _, log_records in itertools.groupby(logs, lambda log_record: log_record.log_record_id)
]
response = [log_record.view() for log_record in logs]
return json_response(response)