From 12e99a04ac8b23a79dc65906e70ee203d5ec33d1 Mon Sep 17 00:00:00 2001 From: Tarit Witworrasakul <60599564+wtarit@users.noreply.github.com> Date: Sun, 5 Apr 2026 10:02:46 -0700 Subject: [PATCH] Add log redirect --- app/routes/urls.py | 8 ++++++++ tests/integration/test_urls.py | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/app/routes/urls.py b/app/routes/urls.py index 98c395e..eaa4ab5 100644 --- a/app/routes/urls.py +++ b/app/routes/urls.py @@ -177,4 +177,12 @@ def get(self, short_code): REDIRECT_NOT_FOUND.inc() abort(404, message="URL is not active") REDIRECT_TOTAL.inc() + Event.create( + url_id=url.id, + user_id=url.user_id, + event_type="redirect", + timestamp=datetime.now(), + details=json.dumps({"short_code": short_code, "original_url": url.original_url}), + ) + EVENT_RECORDED.labels(event_type="redirect").inc() return redirect(url.original_url, code=302) diff --git a/tests/integration/test_urls.py b/tests/integration/test_urls.py index 7eaadac..a34ba15 100644 --- a/tests/integration/test_urls.py +++ b/tests/integration/test_urls.py @@ -103,9 +103,14 @@ def test_delete_url_not_found(client): def test_redirect_url(client, sample_url): + from app.models.event import Event + res = client.get("/urls/abc123/redirect") assert res.status_code == 302 assert res.headers["Location"] == "https://example.com" + event = Event.select().where(Event.event_type == "redirect").first() + assert event is not None + assert event.url_id_id == sample_url def test_redirect_url_not_found(client):