Module: BetterAuth::Passkey::Schema
- Defined in:
- lib/better_auth/passkey/schema.rb
Class Method Summary collapse
- .deep_merge_hashes(base, override) ⇒ Object
- .normalize_hash(value) ⇒ Object
- .normalize_key(key) ⇒ Object
- .passkey_schema(custom_schema = nil) ⇒ Object
Class Method Details
.deep_merge_hashes(base, override) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/better_auth/passkey/schema.rb', line 29 def deep_merge_hashes(base, override) base.merge(override) do |_key, old_value, new_value| if old_value.is_a?(Hash) && new_value.is_a?(Hash) deep_merge_hashes(old_value, new_value) else new_value end end end |
.normalize_hash(value) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/better_auth/passkey/schema.rb', line 39 def normalize_hash(value) return {} unless value.is_a?(Hash) value.each_with_object({}) do |(key, object), result| result[normalize_key(key)] = object.is_a?(Hash) ? normalize_hash(object) : object end end |
.normalize_key(key) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/better_auth/passkey/schema.rb', line 47 def normalize_key(key) key.to_s .delete_prefix("$") .gsub(/([a-z\d])([A-Z])/, "\\1_\\2") .tr("-", "_") .downcase .to_sym end |
.passkey_schema(custom_schema = nil) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/better_auth/passkey/schema.rb', line 8 def passkey_schema(custom_schema = nil) base = { passkey: { model_name: "passkeys", fields: { name: {type: "string", required: false}, publicKey: {type: "string", required: true}, userId: {type: "string", references: {model: "user", field: "id"}, required: true, index: true}, credentialID: {type: "string", required: true, index: true}, counter: {type: "number", required: true}, deviceType: {type: "string", required: true}, backedUp: {type: "boolean", required: true}, transports: {type: "string", required: false}, createdAt: {type: "date", required: false}, aaguid: {type: "string", required: false} } } } deep_merge_hashes(normalize_hash(base), normalize_hash(custom_schema || {})) end |