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)
|
user = env.get("user").as(User)
|
||||||
|
|
||||||
query = Database::Query.where(user_id: user.id.as(String))
|
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 = {"data" => links.map { |link| App::Serializers::Link.new(link) }}
|
||||||
response.to_json
|
response.to_json
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ module App::Models
|
|||||||
field :url, String
|
field :url, String
|
||||||
|
|
||||||
belongs_to :user, User
|
belongs_to :user, User
|
||||||
|
has_many :clicks, Click
|
||||||
end
|
end
|
||||||
|
|
||||||
unique_constraint :slug
|
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 "json"
|
||||||
|
|
||||||
require "../models/link"
|
require "../models/link"
|
||||||
|
require "./click"
|
||||||
|
|
||||||
module App::Serializers
|
module App::Serializers
|
||||||
class Link
|
class Link
|
||||||
@@ -15,6 +16,7 @@ module App::Serializers
|
|||||||
builder.field("id", @link.id)
|
builder.field("id", @link.id)
|
||||||
builder.field("refer", @refer)
|
builder.field("refer", @refer)
|
||||||
builder.field("origin", @link.url)
|
builder.field("origin", @link.url)
|
||||||
|
builder.field("clicks", @link.clicks.map { |click| App::Serializers::Click.new(click) })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user