lib/sequel_rails/session_store.rb in sequel-rails-0.7.0 vs lib/sequel_rails/session_store.rb in sequel-rails-0.8.0
- old
+ new
@@ -1,59 +1,25 @@
-require "sequel"
+require 'sequel'
# Implements Sequel-specific session store.
module SequelRails
-
class SessionStore < ActionDispatch::Session::AbstractStore
-
- class Session < ::Sequel::Model
-
- # property :id, Serial
- # property :session_id, String, :required => true, :unique => true, :unique_index => true
- # property :data, Object, :required => true, :default => ActiveSupport::Base64.encode64(Marshal.dump({}))
- # property :updated_at, DateTime, :required => false, :index => true
-
- class << self
-
- def auto_migrate!
- self.db.create_table :sessions do
- primary_key :id
- column :session_id, String,
- :null => false,
- :unique => true,
- :index => true
-
- column :data, :text,
- :null => false
-
- column :updated_at, DateTime,
- :null => true,
- :index => true
- end
- end
-
- end
-
- def self.name
- 'session'
- end
-
- end
-
SESSION_RECORD_KEY = 'rack.session.record'.freeze
cattr_accessor :session_class
- self.session_class = Session
+ def self.session_class
+ @@session_class ||= Class.new(Sequel::Model(:sessions))
+ end
private
def get_session(env, sid)
sid ||= generate_sid
session = find_session(sid)
env[SESSION_RECORD_KEY] = session
- [ sid, session.data ]
+ [sid, session.data]
end
def set_session(env, sid, session_data)
session = get_session_resource(env, sid)
session.data = session_data
@@ -69,12 +35,10 @@
end
end
def find_session(sid)
klass = self.class.session_class
-
+
klass.where(:session_id => sid).first || klass.new(:session_id => sid)
end
-
end
-
end