77 lines
1.3 KiB
Ruby
77 lines
1.3 KiB
Ruby
class ActiveSqliteRecord
|
|
@sqlite_connect = nil # SQLiteConnect instance
|
|
@row = nil # SQLite row...
|
|
@id = nil # Row ID for the record
|
|
|
|
def initialize(sc, table, row=nil)
|
|
@sqlite_connect = sc
|
|
|
|
if row == nil then
|
|
create(table)
|
|
else
|
|
@id = row['_id']
|
|
@row = row
|
|
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
|