mirror of
https://0xacab.org/sutty/sutty
synced 2025-02-22 23:01:50 +00:00
Merge branch 'blazer' into panel.sutty.nl
This commit is contained in:
commit
b31741d3ed
6 changed files with 54 additions and 4 deletions
|
@ -52,4 +52,12 @@ class PeriodicJob < ApplicationJob
|
|||
def beginning_of_interval
|
||||
@beginning_of_interval ||= last_stat.created_at.try(:"beginning_of_#{starting_interval}")
|
||||
end
|
||||
|
||||
def stop_file
|
||||
@stop_file ||= Rails.root.join('tmp', self.class.to_s.tableize)
|
||||
end
|
||||
|
||||
def stop?
|
||||
File.exist? stop_file
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Genera resúmenes de información para poder mostrar estadísticas y se
|
||||
# corre regularmente a sí misma.
|
||||
class StatCollectionJob < ApplicationJob
|
||||
class StatCollectionJob < PeriodicJob
|
||||
STAT_NAME = 'stat_collection_job'
|
||||
|
||||
def perform(site_id:, once: true)
|
||||
|
@ -44,7 +44,7 @@ class StatCollectionJob < ApplicationJob
|
|||
.where_dimensions(site_id: site.id)
|
||||
.group("dimensions->'site_id'")
|
||||
.rollup(name, interval: interval, update: true) do |rollup|
|
||||
rollup.try(:operation, :value)
|
||||
rollup.try(operation, :value)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ class UriCollectionJob < PeriodicJob
|
|||
|
||||
hostnames.each do |hostname|
|
||||
uris.each do |uri|
|
||||
return if File.exist? Rails.root.join('tmp', 'uri_collection_job_stop')
|
||||
return if stop?
|
||||
|
||||
AccessLog.where(host: hostname, uri: uri)
|
||||
.where('created_at >= ?', beginning_of_interval)
|
||||
|
|
8
db/migrate/20211022224008_add_site_to_stats.rb
Normal file
8
db/migrate/20211022224008_add_site_to_stats.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# La recolección de estadísticas podría pertenecer a un sitio
|
||||
class AddSiteToStats < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
add_belongs_to :stats, :site, index: true, null: true
|
||||
end
|
||||
end
|
9
db/migrate/20211022225449_add_name_to_stats.rb
Normal file
9
db/migrate/20211022225449_add_name_to_stats.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Agregarle un nombre a la estadística
|
||||
class AddNameToStats < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
add_column :stats, :name, :string, null: false
|
||||
add_index :stats, :name, using: 'hash'
|
||||
end
|
||||
end
|
27
db/schema.rb
27
db/schema.rb
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2021_05_14_165639) do
|
||||
ActiveRecord::Schema.define(version: 2021_10_22_225449) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "pg_trgm"
|
||||
|
@ -64,6 +64,7 @@ ActiveRecord::Schema.define(version: 2021_05_14_165639) do
|
|||
t.string "remote_user"
|
||||
t.boolean "crawler", default: false
|
||||
t.string "http_referer"
|
||||
t.datetime "created_at", precision: 6
|
||||
t.index ["geoip2_data_city_name"], name: "index_access_logs_on_geoip2_data_city_name"
|
||||
t.index ["geoip2_data_country_name"], name: "index_access_logs_on_geoip2_data_country_name"
|
||||
t.index ["host"], name: "index_access_logs_on_host"
|
||||
|
@ -303,6 +304,15 @@ ActiveRecord::Schema.define(version: 2021_05_14_165639) do
|
|||
t.index ["usuarie_id"], name: "index_roles_on_usuarie_id"
|
||||
end
|
||||
|
||||
create_table "rollups", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "interval", null: false
|
||||
t.datetime "time", null: false
|
||||
t.jsonb "dimensions", default: {}, null: false
|
||||
t.float "value"
|
||||
t.index ["name", "interval", "time", "dimensions"], name: "index_rollups_on_name_and_interval_and_time_and_dimensions", unique: true
|
||||
end
|
||||
|
||||
create_table "sites", force: :cascade do |t|
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
|
@ -324,6 +334,15 @@ ActiveRecord::Schema.define(version: 2021_05_14_165639) do
|
|||
t.index ["name"], name: "index_sites_on_name", unique: true
|
||||
end
|
||||
|
||||
create_table "stats", force: :cascade do |t|
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.bigint "site_id"
|
||||
t.string "name", null: false
|
||||
t.index ["name"], name: "index_stats_on_name", using: :hash
|
||||
t.index ["site_id"], name: "index_stats_on_site_id"
|
||||
end
|
||||
|
||||
create_table "usuaries", force: :cascade do |t|
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
|
@ -370,4 +389,10 @@ new.indexed_content := to_tsvector(('pg_catalog.' || new.dictionary)::regconfig,
|
|||
SQL_ACTIONS
|
||||
end
|
||||
|
||||
create_trigger("access_logs_before_insert_row_tr", :compatibility => 1).
|
||||
on("access_logs").
|
||||
before(:insert) do
|
||||
"new.created_at := to_timestamp(new.msec);"
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue