Class: CrudService::Api
- Inherits:
-
Object
- Object
- CrudService::Api
- Defined in:
- lib/api.rb
Overview
This class provides a static method, crud_api, to configure a sinatra class with the provided service, resource and primary key.
Class Method Summary collapse
Class Method Details
.crud_api(sinatra, service_name, name, primary_key_name) ⇒ Object
5 6 7 8 9 10 11 12 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 42 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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/api.rb', line 5 def self.crud_api(sinatra, service_name, name, primary_key_name) sinatra. '/'+name do 204 end sinatra.post '/'+name do # Get The data begin data = JSON.parse(request.body.read) rescue Exception => e return 400 end # Valid POST? return 400 unless settings.send(service_name).valid_insert?(data) # Already Exists? return 409 if settings.send(service_name).exists_by_primary_key?(data['code']) # Do Insert record = settings.send(service_name).insert(data) # Other Error return 500 if record == false # Output new record JSON.fast_generate record end sinatra.get '/'+name do sanitize_params(params) # Check query validity return 400 unless settings.send(service_name).valid_query?(params) # Return Regions on Query JSON.fast_generate settings.send(service_name).get_all_by_query(params) end sinatra.get '/'+name+'/:'+primary_key_name do sanitize_params(params) return 400 unless settings.send(service_name).valid_query?(params) record = settings.send(service_name).get_one_by_query(params) return 404 if record.nil? JSON.fast_generate record end sinatra.put '/'+name+'/:'+primary_key_name do # Must Exist return 404 unless settings.send(service_name).exists_by_primary_key?(params[:code]) # Get The Data begin data = JSON.parse(request.body.read) rescue Exception => e return 400 end # Valid Update? return 400 unless settings.send(service_name).valid_update?(data) # Do Update record = settings.send(service_name).update_by_primary_key(params[:code],data) # Other Error return 500 if record.nil? # Return new Region JSON.fast_generate record end sinatra.delete '/'+name+'/:'+primary_key_name do # Must Exist return 404 unless settings.send(service_name).exists_by_primary_key?(params[:code]) # Do Delete return 400 unless settings.send(service_name).delete_by_primary_key(params[:code]) 204 end end |