lib/couchbase-orm.rb in couchbase-orm-1.1.1 vs lib/couchbase-orm.rb in couchbase-orm-2.0.0
- old
+ new
@@ -1,24 +1,59 @@
# frozen_string_literal: true, encoding: ASCII-8BIT
+require "logger"
+require "active_support/lazy_load_hooks"
+require "couchbase-orm/utils"
-require 'libcouchbase'
+ActiveSupport.on_load(:i18n) do
+ I18n.load_path << File.expand_path("couchbase-orm/locale/en.yml", __dir__)
+end
module CouchbaseOrm
+ autoload :Encrypt, 'couchbase-orm/encrypt'
autoload :Error, 'couchbase-orm/error'
autoload :Connection, 'couchbase-orm/connection'
autoload :IdGenerator, 'couchbase-orm/id_generator'
autoload :Base, 'couchbase-orm/base'
+ autoload :Document, 'couchbase-orm/base'
+ autoload :NestedDocument, 'couchbase-orm/base'
+ autoload :HasMany, 'couchbase-orm/utilities/has_many'
+ def self.logger
+ @@logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT).tap { |l| l.level = Logger::INFO unless ENV["COUCHBASE_ORM_DEBUG"] }
+ end
+
+ def self.logger=(logger)
+ @@logger = logger
+ end
+
def self.try_load(id)
result = nil
- result = id.respond_to?(:cas) ? id : CouchbaseOrm::Base.bucket.get(id, quiet: true, extended: true)
+ was_array = id.is_a?(Array)
+ if was_array && id.length == 1
+ query_id = id.first
+ else
+ query_id = id
+ end
- if result && result.value.is_a?(Hash) && result.value[:type]
- ddoc = result.value[:type]
- ::CouchbaseOrm::Base.descendants.each do |model|
- if model.design_document == ddoc
- return model.new(result)
- end
+ result = query_id.is_a?(Array) ? CouchbaseOrm::Base.bucket.default_collection.get_multi(query_id) : CouchbaseOrm::Base.bucket.default_collection.get(query_id)
+
+ result = Array.wrap(result) if was_array
+
+ if result&.is_a?(Array)
+ return result.zip(id).map { |r, id| try_load_create_model(r, id) }.compact
+ end
+
+ return try_load_create_model(result, id)
+ end
+
+ private
+
+ def self.try_load_create_model(result, id)
+ ddoc = result&.content["type"]
+ return nil unless ddoc
+ ::CouchbaseOrm::Base.descendants.each do |model|
+ if model.design_document == ddoc
+ return model.new(result, id: id)
end
end
nil
end
end