feat: get all links clicks join
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -11,6 +11,7 @@ module App::Models
|
||||
field :url, String
|
||||
|
||||
belongs_to :user, User
|
||||
has_many :clicks, Click
|
||||
end
|
||||
|
||||
unique_constraint :slug
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user