Browse Source

move entry storage to sqlite

encrypt 9 years ago
parent
commit
f192c4a43a
3 changed files with 39 additions and 8 deletions
  1. 1 0
      .gitignore
  2. 2 2
      views/index.erb
  3. 36 6
      webapp.rb

+ 1 - 0
.gitignore

@@ -1 +1,2 @@
 *~
+*.db

+ 2 - 2
views/index.erb

@@ -4,11 +4,11 @@
   </head>
   <body>
     <center><h1>
-      <% if settings.open %>
+      <% if state[:open] %>
       <%= "yes" %>
       <% else %>
       <%= "no"%>
       <% end %>
-      </h1></center>
+      </h1>b</center>
   </body>
 </html>

+ 36 - 6
webapp.rb

@@ -1,16 +1,42 @@
 require 'sinatra'
+require 'data_mapper'
+require 'json'
+
+DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/hacklabbo.db")
+
+class Entry
+  include DataMapper::Resource
+  property :id, Serial
+  property :open, Boolean
+  property :date, DateTime, default: Time.now
+end
+
+DataMapper.finalize
+Entry.auto_upgrade!
 
 set :secret_token, "unsecure_token"
-set :open, false
 
 get '/' do
-  erb :index
+  entry = Entry.all(limit: 1, order: [ :date.desc ])
+  state = {
+    open: false,
+    date: nil
+  }
+  unless entry.empty?
+    state[:open] = entry[0][:open]
+    state[:date] = entry[0][:date]
+  end
+  erb :index, locals: { state: state }
 end
 
 get '/hacklabbo/open/:token' do |token|
   if token == settings.secret_token
-    settings.open = true
-    200
+    entry = Entry.create(open: true)
+    if entry.saved?
+      200
+    else
+      500
+    end
   else
     403
   end
@@ -18,8 +44,12 @@ end
 
 get '/hacklabbo/close/:token' do |token|
   if token == settings.secret_token
-    settings.open = false
-    200
+    entry = Entry.create(open: false)
+    if entry.saved?
+      200
+    else
+      500
+    end
   else
     403
   end