Trying to shoe-horn in sqlite. This needs a lot of work. SQLiteConnect needs to initialize itself... reset tables on command and build new ones. Then start hacking at EntityFactory to get active records back.
This commit is contained in:
parent
8fa1664bcb
commit
5ea17719be
5 changed files with 104 additions and 35 deletions
77
active_sqlite_record.rb
Normal file
77
active_sqlite_record.rb
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
class ActiveSqliteRecord
|
||||
@mc = nil # MongoConnect instance
|
||||
@doc = nil # MongoDocument instance....
|
||||
@id = nil # BSON ID for the Doc
|
||||
|
||||
def initialize(mc, doc=nil)
|
||||
@mc = mc
|
||||
|
||||
if doc == nil then
|
||||
create()
|
||||
else
|
||||
@id = doc['_id']
|
||||
@doc = doc
|
||||
end
|
||||
end
|
||||
|
||||
def create()
|
||||
@id = BSON::ObjectId.new()
|
||||
|
||||
doc = get_default_doc()
|
||||
doc['_id'] = @id
|
||||
|
||||
@doc = doc
|
||||
|
||||
@mc.collection.insert_one(@doc)
|
||||
end
|
||||
|
||||
def load()
|
||||
@doc = @mc.collection().find({"_id" => @id}).first()
|
||||
end
|
||||
|
||||
# save and grab the ID and doc....
|
||||
def set(params={}, persist=true)
|
||||
@doc.merge!(params)
|
||||
|
||||
if persist == true then
|
||||
persist()
|
||||
end
|
||||
end
|
||||
|
||||
def get(field)
|
||||
return @doc[field]
|
||||
end
|
||||
|
||||
def persist()
|
||||
@mc.collection().update_one({"_id" => @id}, @doc)
|
||||
end
|
||||
|
||||
def delete()
|
||||
if @id == nil then
|
||||
die
|
||||
end
|
||||
|
||||
@mc.collection().delete_one({"_id" => @id})
|
||||
end
|
||||
|
||||
def update(query)
|
||||
@mc.collection().update_one({"_id" => @id}, query)
|
||||
end
|
||||
|
||||
def get_default_doc()
|
||||
puts "Override this in ent class"
|
||||
return {}
|
||||
end
|
||||
|
||||
def self.build_from(mc, doc=nil)
|
||||
if doc == nil then
|
||||
puts "wtf whoops??"
|
||||
else
|
||||
@mc = mc
|
||||
@doc = doc
|
||||
@id = @doc['_id']
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue