From cf35af71102ac67f984a7fe7af311b305a56aa70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 3 Feb 2015 23:16:12 +0100 Subject: [PATCH] first commit --- Gemfile | 7 +++++++ Gemfile.lock | 33 +++++++++++++++++++++++++++++++++ Rakefile | 15 +++++++++++++++ app.rb | 33 +++++++++++++++++++++++++++++++++ migrations/1_init_db.rb | 9 +++++++++ 5 files changed, 97 insertions(+) create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Rakefile create mode 100644 app.rb create mode 100644 migrations/1_init_db.rb diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..e784a0d --- /dev/null +++ b/Gemfile @@ -0,0 +1,7 @@ +# A sample Gemfile +source "https://rubygems.org" + +gem "sinatra" +gem "sinatra-contrib" +gem "sequel" +gem "sqlite3" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..e48db7c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,33 @@ +GEM + remote: https://rubygems.org/ + specs: + backports (3.6.4) + multi_json (1.10.1) + rack (1.6.0) + rack-protection (1.5.3) + rack + rack-test (0.6.3) + rack (>= 1.0) + sequel (4.18.0) + sinatra (1.4.5) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) + sinatra-contrib (1.4.2) + backports (>= 2.0) + multi_json + rack-protection + rack-test + sinatra (~> 1.4.0) + tilt (~> 1.3) + sqlite3 (1.3.10) + tilt (1.4.1) + +PLATFORMS + ruby + +DEPENDENCIES + sequel + sinatra + sinatra-contrib + sqlite3 diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..6621f2c --- /dev/null +++ b/Rakefile @@ -0,0 +1,15 @@ +namespace :db do + require 'sequel' + Sequel.extension :migration + + task :migrate do + m = Sequel::Migrator + db = Sequel.connect(ENV['DATABASE_URL'] || 'sqlite://library.sqlite') + dir = "migrations" + + target = ENV['TARGET'] ? ENV['TARGET'].to_i : nil + current = ENV['CURRENT'] ? ENV['CURRENT'].to_i : nil + + m.run(db, dir, target: target, current: current) + end +end diff --git a/app.rb b/app.rb new file mode 100644 index 0000000..84371c1 --- /dev/null +++ b/app.rb @@ -0,0 +1,33 @@ +require "sinatra" +require "sinatra/json" +require "sequel" + +NODES = {} + +Sequel.connect(ENV["DATABASE_URL"] || "sqlite://meet4eat.db") + +class Node < Sequel::Model + def to_json(options={}) + { + id: name, + room: room + }.to_json + end +end + +get '/nodes' do + json({ nodes: Node.all }) +end + +put '/nodes/:id' do + node = Node.where(name: params[:id]).first + node ||= Node.new(name: params[:id]) + node.room = params[:room] || "default" + node.save + json("") +end + +delete '/nodes/:id' do + Node.where(name: params[:id]).delete + json("") +end diff --git a/migrations/1_init_db.rb b/migrations/1_init_db.rb new file mode 100644 index 0000000..e1ec372 --- /dev/null +++ b/migrations/1_init_db.rb @@ -0,0 +1,9 @@ +Sequel.migration do + change do + create_table(:nodes) do + primary_key :id + String :room, null: false + String :name, null: false + end + end +end