Sha256: bc8697ee0b51c327eb5102160cac958bce7cb1c1020b5abb9c39a6f9ac139568

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

require 'securerandom'

# encoding: utf-8
module Dynamoid #:nodoc:

  # This module saves things!
  module Persistence
    extend ActiveSupport::Concern
    
    included do
      self.create_table(self.table_name) unless self.table_exists?(self.table_name)
    end
    
    def save
      run_callbacks(:save) do
        self.id = SecureRandom.uuid if self.id.nil? || self.id.blank?
        Dynamoid::Adapter.put_item(self.class.table_name, self.attributes)
        save_indexes
      end
    end
    
    def destroy
      run_callbacks(:destroy) do
        self.delete
      end
    end
    
    def delete
      delete_indexes
      Dynamoid::Adapter.delete_item(self.class.table_name, self.id)
    end
    
    module ClassMethods
      def table_name
        "#{Dynamoid::Config.namespace}_#{self.to_s.downcase.pluralize}"
      end
      
      def create_table(table_name, id = :id)
        Dynamoid::Adapter.create_table(table_name, id.to_sym)
      end
      
      def table_exists?(table_name)
        Dynamoid::Adapter.list_tables.include?(table_name)
      end
    end
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dynamoid-0.1.1 lib/dynamoid/persistence.rb