module Sequel::SQLite::DatabaseMethods
Constants
- JSON_TYPES
Public Class Methods
db_parse_json(s)
click to toggle source
# File lib/sequel/extensions/sqlite_json.rb, line 41 def self.db_parse_json(s) parse_json(s) rescue Sequel.json_parser_error_class => e raise Sequel.convert_exception_class(e, Sequel::InvalidValue) end
extended(db)
click to toggle source
# File lib/sequel/extensions/sqlite_json.rb, line 33 def self.extended(db) procs = db.conversion_procs parse_method = method :db_parse_json JSON_TYPES.each do |type| procs[type] = parse_method end end
parse_json(s)
click to toggle source
# File lib/sequel/extensions/sqlite_json.rb, line 47 def self.parse_json(s) begin value = Sequel.parse_json(s) rescue Sequel.json_parser_error_class => e raise Sequel.convert_exception_class(e, Sequel::InvalidValue) end case value when Array JSONArray.new(value) when Hash JSONHash.new(value) else raise Sequel::InvalidValue, "unhandled json value: #{value.inspect} (from #{s.inspect})" end end
Public Instance Methods
schema_column_type(db_type)
click to toggle source
Calls superclass method
# File lib/sequel/extensions/sqlite_json.rb, line 64 def schema_column_type(db_type) case db_type when 'json' 'json' when /\[\]$/ 'json' else super end end
typecast_value_json(value)
click to toggle source
# File lib/sequel/extensions/sqlite_json.rb, line 75 def typecast_value_json(value) case value when JSONArray, JSONHash value when Array JSONArray.new(value) when Hash JSONHash.new(value) when String DatabaseMethods.parse_json(value) else raise Sequel::InvalidValue, "invalid value for json: #{value.inspect}" end end