jbe/bsw@0: Session = mondelefant.new_class() jbe/bsw@0: Session.table = 'session' jbe/bsw@0: Session.primary_key = { "ident" } jbe/bsw@0: jbe/bsw@0: Session:add_reference{ jbe/bsw@0: mode = 'm1', -- many (m) sessions refer to one (1) user jbe/bsw@0: to = "User", -- name of referenced model (quoting avoids auto-loading here) jbe/bsw@0: this_key = 'user_id', -- own key in session table jbe/bsw@0: that_key = 'id', -- other key in user table jbe/bsw@0: ref = 'user', -- name of reference jbe/bsw@0: back_ref = nil, -- not used for m1 relation! jbe/bsw@0: default_order = nil -- not used for m1 relation! jbe/bsw@0: } jbe/bsw@0: jbe/bsw@0: local function random_string() jbe/bsw@0: return multirand.string( jbe/bsw@0: 32, jbe/bsw@0: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' jbe/bsw@0: ) jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: function Session:new() jbe/bsw@0: local session = self.prototype.new(self) -- super call jbe/bsw@0: session.ident = random_string() jbe/bsw@0: session.csrf_secret = random_string() jbe/bsw@0: session:save() jbe/bsw@0: return session jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: function Session:by_ident(ident) jbe/bsw@0: local selector = self:new_selector() jbe/bsw@0: selector:add_where{ 'ident = ?', ident } jbe/bsw@0: selector:optional_object_mode() jbe/bsw@0: return selector:exec() jbe/bsw@0: end