From ece74226d4261af5b10a846b7c06d913cd67fe41 Mon Sep 17 00:00:00 2001 From: sjdonado Date: Sun, 16 Mar 2025 11:26:20 +0100 Subject: [PATCH] feat: add country to clicks --- app/controllers/link.cr | 2 +- app/models/click.cr | 6 +++--- app/serializers/click.cr | 4 ++-- db/migrations/20240711224103_create_clicks.sql | 1 - db/migrations/20250316102350_add_country_to_clicks.sql | 8 ++++++++ 5 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 db/migrations/20250316102350_add_country_to_clicks.sql diff --git a/app/controllers/link.cr b/app/controllers/link.cr index 508adcc..8afc14e 100644 --- a/app/controllers/link.cr +++ b/app/controllers/link.cr @@ -72,7 +72,7 @@ module App::Controllers::Link click.user_agent = user_agent_str click.browser = user_agent ? user_agent.family : "Unknown" click.os = user_agent ? (user_agent.os.try &.family || "Unknown") : "Unknown" - click.source = referer ? URI.parse(referer).host : "Unknown" + click.referer = referer ? URI.parse(referer).host : "Unknown" changeset = Database.insert(click) if changeset.errors.any? diff --git a/app/models/click.cr b/app/models/click.cr index d7bca81..7a49301 100644 --- a/app/models/click.cr +++ b/app/models/click.cr @@ -5,14 +5,14 @@ module App::Models schema :clicks do field :id, String, primary_key: true field :user_agent, String - field :language, String + field :country, String field :browser, String field :os, String - field :source, String + field :referer, String belongs_to :link, Link end - validate_required [:user_agent, :language, :source] + validate_required [:user_agent, :country, :referer] end end diff --git a/app/serializers/click.cr b/app/serializers/click.cr index f00c553..7573b0a 100644 --- a/app/serializers/click.cr +++ b/app/serializers/click.cr @@ -11,10 +11,10 @@ module App::Serializers builder.object do builder.field("id", @click.id) builder.field("user_agent", @click.user_agent) - builder.field("language", @click.language) + builder.field("country", @click.country) builder.field("browser", @click.browser) builder.field("os", @click.os) - builder.field("source", @click.source) + builder.field("referer", @click.referer) builder.field("created_at", @click.created_at) end end diff --git a/db/migrations/20240711224103_create_clicks.sql b/db/migrations/20240711224103_create_clicks.sql index 3d86d4e..bd2e966 100644 --- a/db/migrations/20240711224103_create_clicks.sql +++ b/db/migrations/20240711224103_create_clicks.sql @@ -4,7 +4,6 @@ CREATE TABLE clicks ( id TEXT PRIMARY KEY NOT NULL, link_id TEXT NOT NULL, user_agent TEXT, - language TEXT, browser TEXT, os TEXT, source TEXT, diff --git a/db/migrations/20250316102350_add_country_to_clicks.sql b/db/migrations/20250316102350_add_country_to_clicks.sql new file mode 100644 index 0000000..1ea8e30 --- /dev/null +++ b/db/migrations/20250316102350_add_country_to_clicks.sql @@ -0,0 +1,8 @@ +-- +micrate Up +-- SQL in section 'Up' is executed when this migration is applied +ALTER TABLE clicks ADD COLUMN country TEXT; +ALTER TABLE clicks RENAME COLUMN source TO referer; + +-- +micrate Down +-- SQL section 'Down' is executed when this migration is rolled back +ALTER TABLE clicks RENAME COLUMN referer TO source;