module Databrain
Constants
- VERSION
Public Class Methods
aevt(db)
click to toggle source
# File lib/databrain.rb, line 54 def self.aevt(db) db.reduce({}) do |idx, (e, a, v)| idx[a] ? idx[a][e] = v : idx[a] = { e => v } idx end end
eavt(db)
click to toggle source
# File lib/databrain.rb, line 47 def self.eavt(db) db.reduce({}) do |idx, (e, a, v)| idx[e] ? idx[e][a] = v : idx[e] = { a => v } idx end end
q(query, db)
click to toggle source
# File lib/databrain.rb, line 8 def self.q(query, db) q_find = [] _q_in = [] q_where = [] query = query.dup until (t = query.first).nil? case query.shift when :find q_find << query.shift until q_brake(query) when :where q_where << query.shift until q_brake(query) when :in raise "Term `in` not implemented yet" else raise "Wrong term: #{t}" end end eavt(db).reduce([]) do |result, (_e, av)| # _e - is entity id # av - is a map of attributes and values finded = q_where.reduce(q_find.dup) do |find, clause| _, a, v = *clause if v.is_a?(Symbol) && v[-1] == "?" i = find.index(v) print "find: #{find}\ni: #{i}\nav: #{av}\na: #{a}\nv: #{v}\n\n" find[i] = av[a] else break if v != av[a] end find end result << finded if finded result end end
transact!(db, query)
click to toggle source
# File lib/databrain.rb, line 6 def self.transact!(db, query); end
Private Class Methods
q_brake((nxt, _))
click to toggle source
# File lib/databrain.rb, line 63 def self.q_brake((nxt, _)) [nil, :where, :in].include? nxt end