Class: BetterAuth::Adapters::Memory
- Includes:
- JoinSupport
- 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.
13 14 15 16 |
# File 'lib/better_auth/adapters/memory.rb', line 13 def initialize(, db = nil) super() @db = db || build_db end |
Instance Attribute Details
#db ⇒ Object (readonly)
Returns the value of attribute db.
11 12 13 |
# File 'lib/better_auth/adapters/memory.rb', line 11 def db @db end |
Instance Method Details
#count(model:, where: nil) ⇒ Object
71 72 73 |
# File 'lib/better_auth/adapters/memory.rb', line 71 def count(model:, where: nil) find_many(model: model, where: where || []).length end |
#create(model:, data:, force_allow_id: false) ⇒ Object
18 19 20 21 22 |
# File 'lib/better_auth/adapters/memory.rb', line 18 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
59 60 61 62 |
# File 'lib/better_auth/adapters/memory.rb', line 59 def delete(model:, where:) delete_many(model: model, where: where) nil end |
#delete_many(model:, where:) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/better_auth/adapters/memory.rb', line 64 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
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/better_auth/adapters/memory.rb', line 28 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
24 25 26 |
# File 'lib/better_auth/adapters/memory.rb', line 24 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
75 76 77 78 79 80 81 |
# File 'lib/better_auth/adapters/memory.rb', line 75 def transaction snapshot = Marshal.load(Marshal.dump(db)) yield self rescue @db = snapshot raise end |
#update(model:, where:, update:) ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/better_auth/adapters/memory.rb', line 39 def update(model:, where:, update:) model = model.to_s ensure_update_input_has_fields!(model, update) records = table_for(model).select { |record| matches_where?(record, where || []) } data = transform_input(model, update, "update", true) ensure_update_data!(data) records.each { |record| record.merge!(data) } records.first end |
#update_many(model:, where:, update:) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/better_auth/adapters/memory.rb', line 49 def update_many(model:, where:, update:) model = model.to_s ensure_update_input_has_fields!(model, update) records = table_for(model).select { |record| matches_where?(record, where || []) } data = transform_input(model, update, "update", true) ensure_update_data!(data) records.each { |record| record.merge!(data) } records.length end |