Sha256: 69032ed389003ec623942c38babdd4172f9ea9a35f159ab394077b3ee878d5c7

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

require "sdbm"
require "securerandom"
require "date"
require 'csv'
require "ostruct"
require "fileutils"
require "oj"
require "msgpack"

require_relative "dddr/sdbm"
require_relative "dddr/sequel"
require_relative "dddr/version"

module Dddr
  ENTITIES = []

  def self.configuration
    @configuration ||= OpenStruct.new
  end

  class MessagePack
    def self.load(obj)
      ::MessagePack.unpack(obj) 
    end
    def self.dump(obj)
      obj.to_msgpack
    end
  end

  class Serializer
    def initialize(engine)
      @engine = engine
    end

    def dump(obj)
      @engine.dump(obj)
    end

    def load(obj)
      @engine.load(obj)
    end
  end

  def self.configure
    configuration.env = ENV["DDDR_ENV"] || "development"
    configuration.data_dir = "/var/dddr"
    configuration.engine = :sdbm
    configuration.serializer = MessagePack
    configuration.container = nil
    yield(configuration) if block_given?
  end

  class Error < StandardError; end

  module Entity

    def self.create_properties(*names)
      names.each do |name|
        attr_accessor name
      end
    end

    def self.included(base)
      if Dddr.configuration.engine == :sdbm
        Dddr::ENTITIES << base
        include Dddr::Sdbm
        base.extend(Dddr::Sdbm::ClassMethods)
      end
      if Dddr.configuration.engine == :sequel
        include Dddr::Sequel
        base.extend(Dddr::Sequel::ClassMethods)
      end
    end

    attr_accessor :uid, :created_at, :last_updated_at, :deleted, :deleted_at

    def new?
      created_at.nil?
    end
  end
end

Dddr.configure

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dddr-2.2.0 lib/dddr.rb