From 93db441556a00d3f7485f903edf1c919b57a638a Mon Sep 17 00:00:00 2001 From: Adam Krawiec Date: Sat, 4 Mar 2017 14:27:28 -0600 Subject: [PATCH 1/2] add crime --- app/app.rb | 2 ++ app/models/crime.rb | 13 +++++++++++++ db/migrate/20170304202530_create_crimes.rb | 13 +++++++++++++ db/schema.rb | 12 +++++++++++- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 app/models/crime.rb create mode 100644 db/migrate/20170304202530_create_crimes.rb diff --git a/app/app.rb b/app/app.rb index 39e0799..64e5198 100644 --- a/app/app.rb +++ b/app/app.rb @@ -21,6 +21,7 @@ ############################################### get '/import-data' do + Crime.import GasWellInspection.import VoterDistrict.import Billboard.import @@ -37,6 +38,7 @@ ################### get '/delete-data' do + Crime.delete_all GasWellInspection.delete_all VoterDistrict.delete_all Billboard.delete_all diff --git a/app/models/crime.rb b/app/models/crime.rb new file mode 100644 index 0000000..ac2eaec --- /dev/null +++ b/app/models/crime.rb @@ -0,0 +1,13 @@ +class Crime < ActiveRecord::Base + + RESOURCE_ID = "d356a409-6764-46d7-942d-4d5a7ffb1c28" + def self.import + DataSaver.save_resources(RESOURCE_ID, "crimes") + end + + def self.clean_data(data) + # + data + end + +end diff --git a/db/migrate/20170304202530_create_crimes.rb b/db/migrate/20170304202530_create_crimes.rb new file mode 100644 index 0000000..6d87e1a --- /dev/null +++ b/db/migrate/20170304202530_create_crimes.rb @@ -0,0 +1,13 @@ +class CreateCrimes < ActiveRecord::Migration[5.0] + def change + create_table :crimes do |t| + t.integer :_id + t.string :crime + t.string :locname + t.datetime :incidentdatetime + t.string :publicadress + t.string :agency + t.string :accuracy + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 45f49e0..9ddd5af 100644 --- a/db/schema.rb +++ b/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: 20170304200019) do +ActiveRecord::Schema.define(version: 20170304202530) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -41,6 +41,16 @@ t.integer "longitude" end + create_table "crimes", force: :cascade do |t| + t.integer "_id" + t.string "crime" + t.string "locname" + t.datetime "incidentdatetime" + t.string "publicadress" + t.string "agency" + t.string "accuracy" + end + create_table "demographics", force: :cascade do |t| t.integer "_id" t.integer "year" From ab6e1d9fba9342a959083423a48586ae7bb5018e Mon Sep 17 00:00:00 2001 From: Adam Krawiec Date: Sat, 4 Mar 2017 15:29:39 -0600 Subject: [PATCH 2/2] crime endpoints --- app/app.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/app.rb b/app/app.rb index 64e5198..f24fafa 100644 --- a/app/app.rb +++ b/app/app.rb @@ -1,6 +1,8 @@ require 'json' require 'sinatra' require "sinatra/activerecord" +require 'uri' + Dir["./app/models/*.rb"].each { |file| require file } configure :production do @@ -132,3 +134,26 @@ record.attributes.except('id') end.to_json end + +######### +# Crime # +######### + +get '/crimes' do + Crime.pluck('crime').group_by do |crime| + crime + end.map do |key, value| + data = Hash.new + data[:violaton] = key + data[:count] = value.count + data[:url] = URI.encode("/crimes/violation/#{URI.encode(key)}") + data + end.sort_by do |hash| + -hash[:count] + end.to_json +end + +get '/crimes/violation/:crime' do + crime = URI.decode params[:crime] + Crime.where(crime: crime).to_json +end