Class: Sequel::Couchbase::Model

Inherits:
Couchbase::Model
  • Object
show all
Defined in:
lib/sequel_couchbase_model.rb

Constant Summary collapse

@@plugins =
[]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.blank_object?(obj) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/sequel_couchbase_model.rb', line 59

def self.blank_object?(obj)
  return obj.blank? if obj.respond_to?(:blank?)
  case obj
    when NilClass, FalseClass
      true
    when Numeric, TrueClass
      false
    when String
      obj.strip.empty?
    else
      obj.respond_to?(:empty?) ? obj.empty? : false
  end
end

.dbObject



77
78
79
# File 'lib/sequel_couchbase_model.rb', line 77

def self.db
  self
end

.find(id) ⇒ Object



85
86
87
88
89
90
91
# File 'lib/sequel_couchbase_model.rb', line 85

def self.find id
  begin
    super id
  rescue ::Couchbase::Error::NotFound
    nil
  end
end

.find!(id) ⇒ Object



81
82
83
# File 'lib/sequel_couchbase_model.rb', line 81

def self.find! id
  super id
end

.plugin(plugin, *args, &block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/sequel_couchbase_model.rb', line 17

def self.plugin(plugin, *args, &block)
  m = plugin.is_a?(Module) ? plugin : plugin_module(plugin)
  unless @@plugins.include?(m)
    @@plugins << m
  end
  m.apply(self, *args, &block) if m.respond_to?(:apply)
  include(m::InstanceMethods) if plugin_module_defined?(m, :InstanceMethods)
  extend(m::ClassMethods) if plugin_module_defined?(m, :ClassMethods)
  dataset_extend(m::DatasetMethods) if plugin_module_defined?(m, :DatasetMethods)

  m.configure(self, *args, &block) if m.respond_to?(:configure)
end

.plugin_module(plugin) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/sequel_couchbase_model.rb', line 40

def self.plugin_module(plugin)
  module_name = plugin.to_s.gsub(/(^|_)(.)/) { |x| x[-1..-1].upcase }
  if !Sequel::Plugins.const_defined?(module_name) ||
      (Sequel.const_defined?(module_name) &&
          Sequel::Plugins.const_get(module_name) == Sequel.const_get(module_name))
    begin
      Sequel.tsk_require "sequel/plugins/#{plugin}"
    rescue LoadError => e
      begin
        Sequel.tsk_require "sequel_#{plugin}"
      rescue LoadError => e2
        e.message << "; #{e2.message}"
        raise e
      end
    end
  end
  Sequel::Plugins.const_get(module_name)
end

.plugin_module_defined?(plugin, submod) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
33
34
35
36
37
38
# File 'lib/sequel_couchbase_model.rb', line 30

def self.plugin_module_defined?(plugin, submod)
  if RUBY_VERSION >= '1.9'
    plugin.const_defined?(submod, false)
  else
    # :nocov:
    plugin.const_defined?(submod)
    # :nocov:
  end
end

Instance Method Details

#blank_object?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/sequel_couchbase_model.rb', line 73

def blank_object?
  self.class.blank_object? self
end

#disable_update_timestamps!Object



107
108
109
# File 'lib/sequel_couchbase_model.rb', line 107

def disable_update_timestamps!
  @auto_timestamps_disabled = true
end

#errorsObject



111
112
113
# File 'lib/sequel_couchbase_model.rb', line 111

def errors
  @errors ||= Sequel::Model::Errors.new
end

#save(options = {}) ⇒ Object



97
98
99
# File 'lib/sequel_couchbase_model.rb', line 97

def save options = {}
  save_ex options, ->(options) { super options }, ->() { false }
end

#save!(options = {}) ⇒ Object



101
102
103
104
105
# File 'lib/sequel_couchbase_model.rb', line 101

def save! options = {}
  save_ex options, ->(options) { super options }, ->() {
    raise ValidationException.new(@errors), "Could not save #{self.class.name} model due to failing validation: #{errors.inspect}\n\tmodel was: #{inspect}"
  }
end

#valid?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/sequel_couchbase_model.rb', line 93

def valid?
  errors.blank?
end