1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-19 13:54:25 +01:00

creates models open_api client and calls_count_tracing, adds worker to trace calls count

This commit is contained in:
Nicolas Florentin 2016-05-04 11:48:14 +02:00
parent ff316f7bdd
commit 92b3471032
11 changed files with 78 additions and 1 deletions

View File

@ -139,3 +139,5 @@ gem 'protected_attributes'
gem 'message_format'
gem 'openlab_ruby'
gem 'has_secure_token'

View File

@ -164,6 +164,8 @@ GEM
activerecord (>= 4.0.0)
globalid (0.3.6)
activesupport (>= 4.1.0)
has_secure_token (1.0.0)
activerecord (>= 3.0)
hashdiff (0.3.0)
hashie (3.4.2)
highline (1.7.1)
@ -452,6 +454,7 @@ DEPENDENCIES
foreman
forgery
friendly_id (~> 5.1.0)
has_secure_token
jbuilder (~> 2.0)
jquery-rails
kaminari

5
app/models/open_api.rb Normal file
View File

@ -0,0 +1,5 @@
module OpenAPI
def self.table_name_prefix
'open_api_'
end
end

View File

@ -0,0 +1,4 @@
class OpenAPI::CallsCountTracing < ActiveRecord::Base
belongs_to :client, foreign_key: :open_api_client_id
validates :client, :at, presence: true
end

View File

@ -0,0 +1,9 @@
class OpenAPI::Client < ActiveRecord::Base
has_many :calls_count_tracings, foreign_key: :open_api_client_id, dependent: :destroy
has_secure_token
validates :name, presence: true
def increment_calls_count
update_column(:calls_count, calls_count+1)
end
end

View File

@ -0,0 +1 @@
class OpenAPI::ParameterError < StandardError; end

View File

@ -0,0 +1,10 @@
class OpenAPITraceCallsCountWorker < ActiveJob::Base
include Sidekiq::Worker
sidekiq_options queue: 'default', retry: true
def perform
OpenAPI::Client.find_each do |client|
OpenAPI::CallsCountTracing.create!(client: client, calls_count: client.calls_count, at: DateTime.now)
end
end
end

View File

@ -14,3 +14,7 @@ generate_statistic:
cron: "0 1 * * *"
class: "StatisticWorker"
queue: default
open_api_trace_calls_count:
cron: "0 4 * * 0" # every sunday at 4am
class: "OpenAPITraceCallsCountWorker"

View File

@ -0,0 +1,10 @@
class CreateOpenAPIClients < ActiveRecord::Migration
def change
create_table :open_api_clients do |t|
t.string :name
t.integer :calls_count, default: 0
t.string :token
t.timestamps null: false
end
end
end

View File

@ -0,0 +1,10 @@
class CreateOpenAPICallsCountTracings < ActiveRecord::Migration
def change
create_table :open_api_calls_count_tracings do |t|
t.belongs_to :open_api_client, foreign_key: true, index: true
t.integer :calls_count, null: false
t.datetime :at, null: false
t.timestamps null: false
end
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20160119131623) do
ActiveRecord::Schema.define(version: 20160504085905) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -267,6 +267,24 @@ ActiveRecord::Schema.define(version: 20160119131623) do
add_index "offer_days", ["subscription_id"], name: "index_offer_days_on_subscription_id", using: :btree
create_table "open_api_calls_count_tracings", force: :cascade do |t|
t.integer "open_api_client_id"
t.integer "calls_count", null: false
t.datetime "at", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "open_api_calls_count_tracings", ["open_api_client_id"], name: "index_open_api_calls_count_tracings_on_open_api_client_id", using: :btree
create_table "open_api_clients", force: :cascade do |t|
t.string "name"
t.integer "calls_count", default: 0
t.string "token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "plans", force: :cascade do |t|
t.string "name"
t.integer "amount"
@ -643,6 +661,7 @@ ActiveRecord::Schema.define(version: 20160119131623) do
add_foreign_key "availability_tags", "availabilities"
add_foreign_key "availability_tags", "tags"
add_foreign_key "o_auth2_mappings", "o_auth2_providers"
add_foreign_key "open_api_calls_count_tracings", "open_api_clients"
add_foreign_key "prices", "groups"
add_foreign_key "prices", "plans"
add_foreign_key "user_tags", "tags"