Class: BetterAuth::Adapters::Memory
- Defined in:
- lib/better_auth/adapters/memory.rb
Instance Attribute Summary collapse
-
#db ⇒ Object
readonly
Returns the value of attribute db.
Attributes inherited from Base
Instance Method Summary collapse
- #count(model:, where: nil) ⇒ Object
- #create(model:, data:, force_allow_id: false) ⇒ Object
- #delete(model:, where:) ⇒ Object
- #delete_many(model:, where:) ⇒ Object
- #find_many(model:, where: [], sort_by: nil, limit: nil, offset: nil, select: nil, join: nil) ⇒ Object
- #find_one(model:, where: [], select: nil, join: nil) ⇒ Object
-
#initialize(options, db = nil) ⇒ Memory
constructor
A new instance of Memory.
- #transaction ⇒ Object
- #update(model:, where:, update:) ⇒ Object
- #update_many(model:, where:, update:) ⇒ Object
Constructor Details
#initialize(options, db = nil) ⇒ Memory
Returns a new instance of Memory.
11 12 13 14 |
# File 'lib/better_auth/adapters/memory.rb', line 11 def initialize(, db = nil) super() @db = db || build_db end |
Instance Attribute Details
#db ⇒ Object (readonly)
Returns the value of attribute db.
9 10 11 |
# File 'lib/better_auth/adapters/memory.rb', line 9 def db @db end |
Instance Method Details
#count(model:, where: nil) ⇒ Object
63 64 65 |
# File 'lib/better_auth/adapters/memory.rb', line 63 def count(model:, where: nil) find_many(model: model, where: where || []).length end |
#create(model:, data:, force_allow_id: false) ⇒ Object
16 17 18 19 20 |
# File 'lib/better_auth/adapters/memory.rb', line 16 def create(model:, data:, force_allow_id: false) model = model.to_s table_for(model) << transform_input(model, data, "create", force_allow_id) table_for(model).last end |
#delete(model:, where:) ⇒ Object
51 52 53 54 |
# File 'lib/better_auth/adapters/memory.rb', line 51 def delete(model:, where:) delete_many(model: model, where: where) nil end |
#delete_many(model:, where:) ⇒ Object
56 57 58 59 60 61 |
# File 'lib/better_auth/adapters/memory.rb', line 56 def delete_many(model:, where:) table = table_for(model) matches = table.select { |record| matches_where?(record, where || []) } @db[model.to_s] = table.reject { |record| matches.include?(record) } matches.length end |
#find_many(model:, where: [], sort_by: nil, limit: nil, offset: nil, select: nil, join: nil) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/better_auth/adapters/memory.rb', line 26 def find_many(model:, where: [], sort_by: nil, limit: nil, offset: nil, select: nil, join: nil) model = model.to_s records = table_for(model).select { |record| matches_where?(record, where || []) }.map(&:dup) records = records.map { |record| apply_join(model, record, join) } if join records = sort_records(model, records, sort_by) if sort_by records = records.drop(offset.to_i) if offset records = records.first(limit.to_i) if limit records = records.map { |record| select_fields(model, record, select) } if select && !select.empty? records end |
#find_one(model:, where: [], select: nil, join: nil) ⇒ Object
22 23 24 |
# File 'lib/better_auth/adapters/memory.rb', line 22 def find_one(model:, where: [], select: nil, join: nil) find_many(model: model, where: where, select: select, join: join, limit: 1).first end |
#transaction ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/better_auth/adapters/memory.rb', line 67 def transaction snapshot = Marshal.load(Marshal.dump(db)) yield self rescue @db = snapshot raise end |
#update(model:, where:, update:) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/better_auth/adapters/memory.rb', line 37 def update(model:, where:, update:) records = table_for(model).select { |record| matches_where?(record, where || []) } data = transform_input(model.to_s, update, "update", true) records.each { |record| record.merge!(data) } records.first end |
#update_many(model:, where:, update:) ⇒ Object
44 45 46 47 48 49 |
# File 'lib/better_auth/adapters/memory.rb', line 44 def update_many(model:, where:, update:) records = table_for(model).select { |record| matches_where?(record, where || []) } data = transform_input(model.to_s, update, "update", true) records.each { |record| record.merge!(data) } records.first end |