cartodb-4.42/lib/cartodb/stats/platform.rb

68 lines
2.0 KiB
Ruby
Raw Normal View History

2024-04-06 13:25:13 +08:00
module CartoDB
module Stats
class Platform
# Total users created
def users
return ::User.count
end
# Total users that aren't FREE
def pay_users
::User.where("upper(account_type) != 'FREE'").count
end
# Total datasets
def datasets
return UserTable.count
end
# Total seats among orgs
# Returns a hash with reserved seats and used seats
def seats_among_orgs
seats_used = ::User.where('organization_id IS NOT NULL').count
seats_reserved = Organization.sum(:seats)
return {'used' => seats_used, 'reserved' => seats_reserved}
end
# Shared objects among orgs
# Returns a hash with shared visualizations and shared datasets
def shared_objects_among_orgs
shared_objects = {}
visualization_types_sql = "SELECT COUNT(*), visualizations.type FROM shared_entities, visualizations WHERE entity_id=visualizations.id::uuid GROUP BY type"
db = ::SequelRails.configuration.environment_for(Rails.env)
conn = Sequel.connect(db)
conn.fetch(visualization_types_sql).all.each do |vt|
if vt[:type] == 'table'
shared_objects['datasets'] = vt[:count]
elsif vt[:type] == 'derived'
shared_objects['visualizations'] = vt[:count]
end
end
conn.disconnect
return shared_objects
end
# Total visualizations
def visualizations
Carto::Visualization.where("type = 'derived'").count
end
# Total maps
def maps
Carto::Visualization.where("type in ('derived', 'table', 'slide')").count
end
# Total active users
def active_users
active_users = "select count(distinct(user_id)) from visualizations where type in ('derived', 'table', 'slide')"
db = ::SequelRails.configuration.environment_for(Rails.env)
conn = Sequel.connect(db)
au_count = conn.fetch(active_users).first[:count]
conn.disconnect
return au_count
end
end
end
end