Module: Legion::API::Routes::Schedules
- Defined in:
- lib/legion/api/schedules.rb
Class Method Summary collapse
- .register_list_and_create(app) ⇒ Object
- .register_logs(app) ⇒ Object
- .register_show_update_delete(app) ⇒ Object
- .registered(app) ⇒ Object
Class Method Details
.register_list_and_create(app) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/legion/api/schedules.rb', line 13 def self.register_list_and_create(app) app.get '/api/schedules' do require_scheduler! dataset = Legion::Extensions::Scheduler::Data::Model::Schedule.order(:id) dataset = dataset.where(active: true) if params[:active] == 'true' json_collection(dataset) end app.post '/api/schedules' do Legion::Logging.debug "API: POST /api/schedules params=#{params.keys}" require_scheduler! body = parse_request_body unless body[:function_id] Legion::Logging.warn 'API POST /api/schedules returned 422: function_id is required' halt 422, json_error('missing_field', 'function_id is required', status_code: 422) end unless body[:cron] || body[:interval] Legion::Logging.warn 'API POST /api/schedules returned 422: cron or interval is required' halt 422, json_error('missing_field', 'cron or interval is required', status_code: 422) end attrs = build_schedule_attrs(body) id = Legion::Extensions::Scheduler::Data::Model::Schedule.insert(attrs) schedule = Legion::Extensions::Scheduler::Data::Model::Schedule[id] Legion::Logging.info "API: created schedule #{id}" json_response(schedule.values, status_code: 201) end end |
.register_logs(app) ⇒ Object
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/legion/api/schedules.rb', line 71 def self.register_logs(app) app.get '/api/schedules/:id/logs' do require_scheduler! find_or_halt(Legion::Extensions::Scheduler::Data::Model::Schedule, params[:id]) logs = Legion::Extensions::Scheduler::Data::Model::ScheduleLog .where(schedule_id: params[:id].to_i) .order(Sequel.desc(:id)) json_collection(logs) end end |
.register_show_update_delete(app) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/legion/api/schedules.rb', line 43 def self.register_show_update_delete(app) app.get '/api/schedules/:id' do require_scheduler! schedule = find_or_halt(Legion::Extensions::Scheduler::Data::Model::Schedule, params[:id]) json_response(schedule.values) end app.put '/api/schedules/:id' do require_scheduler! schedule = find_or_halt(Legion::Extensions::Scheduler::Data::Model::Schedule, params[:id]) body = parse_request_body updates = build_schedule_updates(body) schedule.update(updates) unless updates.empty? schedule.refresh Legion::Logging.info "API: updated schedule #{params[:id]}" json_response(schedule.values) end app.delete '/api/schedules/:id' do require_scheduler! schedule = find_or_halt(Legion::Extensions::Scheduler::Data::Model::Schedule, params[:id]) schedule.delete Legion::Logging.info "API: deleted schedule #{params[:id]}" json_response({ deleted: true }) end end |
.registered(app) ⇒ Object
7 8 9 10 11 |
# File 'lib/legion/api/schedules.rb', line 7 def self.registered(app) register_list_and_create(app) register_show_update_delete(app) register_logs(app) end |