module Sequel::Plugins::UUIDPrefix::InstanceMethods

Public Instance Methods

after_initialize() click to toggle source
Calls superclass method
# File lib/sequel/plugins/uuid_prefix.rb, line 82
def after_initialize
  super
  # set random generated uuid value
  self[:uuid] ||= Array.new(8) do UUID_TABLE[rand(UUID_TABLE.size)]; end.join
end
before_create() click to toggle source
Calls superclass method
# File lib/sequel/plugins/uuid_prefix.rb, line 74
def before_create
  if !self.class.find(:uuid=>self[:uuid]).nil?
    raise UUIDDuplication, "Duplicate UUID: #{self.canonical_uuid} already exists"
  end

  super
end
before_validation() click to toggle source
Calls superclass method
# File lib/sequel/plugins/uuid_prefix.rb, line 67
def before_validation
  # trim uuid prefix if it is in the self[:uuid]
  self[:uuid].sub!(/^#{self.class.uuid_prefix}-/, '')

  super
end
canonical_uuid() click to toggle source

Returns canonicalized uuid which has the form of “{uuid_prefix}-{uuid}”.

# File lib/sequel/plugins/uuid_prefix.rb, line 90
def canonical_uuid
  "#{self.uuid_prefix}-#{self[:uuid]}"
end
Also aliased as: cuuid
cuuid()
Alias for: canonical_uuid
to_api_document() click to toggle source

generate API response document. similar to to_hash() but not to expose integer primary key.

# File lib/sequel/plugins/uuid_prefix.rb, line 125
def to_api_document
  self.values.dup.merge({:id=>self.canonical_uuid, :uuid=>canonical_uuid})
end
to_hash() click to toggle source
# File lib/sequel/plugins/uuid_prefix.rb, line 95
def to_hash()
  r = self.values.dup.merge({id: self.id,
                             uuid: canonical_uuid,
                             class_name: self.class.name.demodulize
                           })

  serialize_columns = []

  if defined? Sequel::Plugins::Serialization
    if self.class.plugins.member?(Sequel::Plugins::Serialization)
      self.class.deserialization_map.keys.each { |c|
        serialize_columns << c
        r[c] = self.__send__(c)
      }
    end
  end

  # convert Sequel::SQL::Blob column.
  # TODO: look for alternative method to stop to retrieve
  #       db_schema hash.
  self.class.db_schema.each { |c, v|
    if v[:db_type] == 'text' && v[:type] == :string && !serialize_columns.member?(c)
      r[c] = self.__send__(c).to_s
    end
  }
  r
end
uuid_prefix() click to toggle source

read-only instance method to retrieve @uuid_prefix class variable.

# File lib/sequel/plugins/uuid_prefix.rb, line 63
def uuid_prefix
  self.class.uuid_prefix
end