feat: get all links clicks join

This commit is contained in:
Juan Rodriguez
2024-07-12 07:58:21 +02:00
parent ebc9c6852e
commit a2aa586dae
4 changed files with 26 additions and 1 deletions
+1 -1
View File
@@ -95,7 +95,7 @@ module App::Controllers::Link
user = env.get("user").as(User)
query = Database::Query.where(user_id: user.id.as(String))
links = Database.all(Link, query)
links = Database.all(Link, query, preload: [:clicks])
response = {"data" => links.map { |link| App::Serializers::Link.new(link) }}
response.to_json
+1
View File
@@ -11,6 +11,7 @@ module App::Models
field :url, String
belongs_to :user, User
has_many :clicks, Click
end
unique_constraint :slug
+22
View File
@@ -0,0 +1,22 @@
require "json"
require "../models/click"
module App::Serializers
class Click
def initialize(@click : App::Models::Click)
end
def to_json(builder : JSON::Builder)
builder.object do
builder.field("id", @click.id)
builder.field("user_agent", @click.user_agent)
builder.field("language", @click.language)
builder.field("browser", @click.browser)
builder.field("os", @click.os)
builder.field("source", @click.source)
builder.field("created_at", @click.created_at)
end
end
end
end
+2
View File
@@ -1,6 +1,7 @@
require "json"
require "../models/link"
require "./click"
module App::Serializers
class Link
@@ -15,6 +16,7 @@ module App::Serializers
builder.field("id", @link.id)
builder.field("refer", @refer)
builder.field("origin", @link.url)
builder.field("clicks", @link.clicks.map { |click| App::Serializers::Click.new(click) })
end
end
end