46 lines
1.5 KiB
Ruby
46 lines
1.5 KiB
Ruby
module Carto
|
|
module Api
|
|
class TablePresenter
|
|
def initialize(table, current_viewer, context)
|
|
@table = table
|
|
@current_viewer = current_viewer
|
|
@context = context
|
|
end
|
|
|
|
def to_poro
|
|
{
|
|
id: @table.id,
|
|
name: qualified_table_name,
|
|
privacy: @table.privacy_text,
|
|
schema: @table.schema,
|
|
updated_at: @table.updated_at,
|
|
rows_counted: @table.rows_estimated,
|
|
table_size: @table.table_size,
|
|
map_id: @table.map_id,
|
|
description: @table.description,
|
|
geometry_types: @table.geometry_types,
|
|
table_visualization: VisualizationPresenter.new(@table.table_visualization, @current_viewer, @context).to_poro,
|
|
dependent_visualizations: @table.fully_dependent_visualizations.map do |v|
|
|
VisualizationPresenter.new(v, @current_viewer, @context).to_summarized_poro
|
|
end,
|
|
non_dependent_visualizations: @table.partially_dependent_visualizations.map do |v|
|
|
VisualizationPresenter.new(v, @current_viewer, @context).to_summarized_poro
|
|
end,
|
|
synchronization: SynchronizationPresenter.new(@table.synchronization).to_poro
|
|
}
|
|
end
|
|
|
|
private
|
|
|
|
def qualified_table_name
|
|
owner = @table.owner
|
|
if @current_viewer && owner && owner.id != @current_viewer.id
|
|
"#{owner.sql_safe_database_schema}.#{@table.name}"
|
|
else
|
|
@table.name
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|