activerpg/active_sqlite_record.rb

77 lines
1.2 KiB
Ruby

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