Sha256: 3d54e08d3999d98ffefbafab78b6d4565cd6d099f13febb9e91723f2861ce140

Contents?: true

Size: 997 Bytes

Versions: 5

Compression:

Stored size: 997 Bytes

Contents

# -*- coding: utf-8 -*-
#
# APIサーバを利用しての採番
#
require 'httpclient'

module ActiveRecord::Turntable
  class Sequencer
    class Api < Sequencer
      API_ENDPOINT = '/sequences/'
      NEXT_VALUE_ENDPOINT = '/new'

      def initialize(klass, options = {})
        @klass = klass
        @options = options
        @host = @options["api_host"]
        @port = @options["api_port"]
        @client = HTTPClient.new
      end

      def next_sequence_value(sequence_name)
        res = @client.get_content("http://#{@host}:#{@port}#{API_ENDPOINT}#{sequence_name}#{NEXT_VALUE_ENDPOINT}")
        new_id = res.to_i
        raise SequenceNotFoundError if new_id.zero?
        return new_id
      end

      def current_sequence_value(sequence_name)
        res = @client.get_content("http://#{@host}:#{@port}#{API_ENDPOINT}#{sequence_name}")
        current_id = res.to_i
        raise SequenceNotFoundError if current_id.zero?
        return current_id
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
activerecord-turntable-1.1.2 lib/active_record/turntable/sequencer/api.rb
activerecord-turntable-1.1.1 lib/active_record/turntable/sequencer/api.rb
activerecord-turntable-1.1.0 lib/active_record/turntable/sequencer/api.rb
activerecord-turntable-1.0.1 lib/active_record/turntable/sequencer/api.rb
activerecord-turntable-1.0.0 lib/active_record/turntable/sequencer/api.rb