mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 07:17:17 +00:00
feat: serve logs and events from the newest to oldest, but keep the
ordering So basically initial implementation, with limit=1, would emit the oldest record in series. New implementation will return the most recent one instead The response is still sorted by ascension
This commit is contained in:
parent
cd98b7f6e6
commit
b90d93f3c0
@ -51,11 +51,13 @@ class EventOperations(Operations):
|
||||
Event.from_json(row)
|
||||
for row in connection.execute(
|
||||
"""
|
||||
select created, event, object_id, message, data from auditlog
|
||||
where (:event is null or event = :event)
|
||||
and (:object_id is null or object_id = :object_id)
|
||||
and repository = :repository
|
||||
order by created limit :limit offset :offset
|
||||
select created, event, object_id, message, data from (
|
||||
select * from auditlog
|
||||
where (:event is null or event = :event)
|
||||
and (:object_id is null or object_id = :object_id)
|
||||
and repository = :repository
|
||||
order by created desc limit :limit offset :offset
|
||||
) order by created asc
|
||||
""",
|
||||
{
|
||||
"event": event,
|
||||
|
@ -50,9 +50,11 @@ class LogsOperations(Operations):
|
||||
(row["created"], row["record"])
|
||||
for row in connection.execute(
|
||||
"""
|
||||
select created, record from logs
|
||||
where package_base = :package_base and repository = :repository
|
||||
order by created limit :limit offset :offset
|
||||
select created, record from (
|
||||
select * from logs
|
||||
where package_base = :package_base and repository = :repository
|
||||
order by created desc limit :limit offset :offset
|
||||
) order by created asc
|
||||
""",
|
||||
{
|
||||
"package_base": package_base,
|
||||
|
@ -37,4 +37,4 @@ def test_event_insert_get_pagination(database: SQLite) -> None:
|
||||
"""
|
||||
database.event_insert(Event("1", "1"))
|
||||
database.event_insert(Event("2", "2"))
|
||||
assert all(event.event == "2" for event in database.event_get(limit=1, offset=1))
|
||||
assert all(event.event == "1" for event in database.event_get(limit=1, offset=1))
|
||||
|
@ -59,7 +59,7 @@ def test_logs_insert_get_pagination(database: SQLite, package_ahriman: Package)
|
||||
"""
|
||||
database.logs_insert(LogRecordId(package_ahriman.base, "1"), 42.0, "message 1")
|
||||
database.logs_insert(LogRecordId(package_ahriman.base, "1"), 43.0, "message 2")
|
||||
assert database.logs_get(package_ahriman.base, 1, 1) == [(43.0, "message 2")]
|
||||
assert database.logs_get(package_ahriman.base, 1, 1) == [(42.0, "message 1")]
|
||||
|
||||
|
||||
def test_logs_insert_get_multi(database: SQLite, package_ahriman: Package) -> None:
|
||||
|
@ -39,7 +39,7 @@ async def test_get(client: TestClient) -> None:
|
||||
assert not response_schema.validate(json, many=True)
|
||||
|
||||
events = [Event.from_json(event) for event in json]
|
||||
assert events == [event1, event2]
|
||||
assert events == [event2, event1]
|
||||
|
||||
|
||||
async def test_get_with_pagination(client: TestClient) -> None:
|
||||
@ -61,7 +61,7 @@ async def test_get_with_pagination(client: TestClient) -> None:
|
||||
json = await response.json()
|
||||
assert not response_schema.validate(json, many=True)
|
||||
|
||||
assert [Event.from_json(event) for event in json] == [event2]
|
||||
assert [Event.from_json(event) for event in json] == [event1]
|
||||
|
||||
|
||||
async def test_get_bad_request(client: TestClient) -> None:
|
||||
|
@ -76,7 +76,7 @@ async def test_get_with_pagination(client: TestClient, package_ahriman: Package)
|
||||
|
||||
logs = await response.json()
|
||||
assert not response_schema.validate(logs)
|
||||
assert logs == [{"created": 43.0, "message": "message 2"}]
|
||||
assert logs == [{"created": 42.0, "message": "message 1"}]
|
||||
|
||||
|
||||
async def test_get_bad_request(client: TestClient, package_ahriman: Package) -> None:
|
||||
|
Loading…
Reference in New Issue
Block a user