Sha256: 24a163093cf2ff05051085002b3c73eda041f273d7cdd1950e42d837254a3b24

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

module Dag
  class TableCollection < Model
    include Enumerable
    include Dag::Client::ClusterValidation

    attr_reader :cluster_name

    def initialize(api, cluster_name, db_name)
      super(api)

      @cluster_name = cluster_name
      @db_name = db_name
    end

    def each
      marker = nil
      truncated = false
      begin
        table_info_list = @api.table_info_list(@cluster_name, @db_name, make_options(marker))
        table_info_list['tables'].each do |table_info|
          yield Dag::Table.new(@api, @cluster_name, @db_name, params: table_info)
        end
        truncated = table_info_list['isTruncated']
        marker = table_info_list['nextMarker']
      end while truncated
    end

    #
    # == parameters ==
    # * <tt>table</tt> - table name
    # * <tt>format</tt> - 'csv' or 'tsv' or 'json' or 'json_agent'
    # * <tt>schema/tt> - schema
    # * <tt>comment</tt> - comment
    def create(table: '', format: nil, schema: nil, comment: nil)
      params = {
        table: table,
        schema: schema,
        create_api: true
      }
      params.merge!({ format: format }) if format
      params.merge!({ comment: comment }) if comment

      @api.create_table(@cluster_name, @db_name, params: params)
      table_info = @api.table(@cluster_name, @db_name, table)
      Dag::Table.new(@api, @cluster_name, @db_name, params: table_info)
    end

    private

    def make_options(marker = nil)
      options = { max: 100 }

      if marker
        options = options.merge(marker: marker)
      end

      options
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
iij-dag-client-1.0.2 lib/dag/client/model/table_collection.rb
iij-dag-client-1.0.1 lib/dag/client/model/table_collection.rb