module Dag::Client::API::Table
Public Instance Methods
create_table(cluster_name, db_name, params: {})
click to toggle source
# File lib/dag/client/api/table.rb, line 21 def create_table(cluster_name, db_name, params: {}) tbl_name = params[:table] raise Dag::Client::ParameterInvalid.new('table name is blank') if tbl_name.blank? if tbl_name !~ /\A[a-z0-9_]+\Z/ raise Dag::Client::ParameterInvalid.new("tbl_name is invalid: #{tbl_name}") end if tbl_name.length > 128 raise Dag::Client::ParameterInvalid.new("tbl_name is too long: #{tbl_name}") end format = params[:format] if format && !['csv', 'tsv', 'json', 'json_agent'].include?(format) raise Dag::Client::ParameterInvalid.new("format is invalid: #{format}") end comment = params[:comment] if comment.present? && comment !~ /\A[[:ascii:]]+\Z/ raise Dag::Client::ParameterInvalid.new("comment is not ascii") end if comment && comment.length > 100 raise Dag::Client::ParameterInvalid.new("comment is too long") end resource = %Q(/v1/#{cluster_name}/#{db_name}/#{tbl_name}) parameters = {} if format parameters.merge!('format' => format) end schema = params[:schema] if schema parameters.merge!('schema' => params[:schema]) end if comment parameters.merge!('comment' => comment) end # Table Check if params[:create_api] && response = table(cluster_name, db_name, tbl_name) if response['tableName'] == tbl_name raise Dag::Client::TableAlreadyExists.new('Table already exists') end end execute(RestParameter.new(:put, resource, cano_resource: 'table', content_type: 'application/json', parameters: parameters)) end
delete_table(cluster_name, database_name, tbl_name)
click to toggle source
# File lib/dag/client/api/table.rb, line 113 def delete_table(cluster_name, database_name, tbl_name) execute(RestParameter.new(:delete, "/v1/#{cluster_name}/#{database_name}/#{tbl_name}", content_type: 'application/json', cano_resource: 'table')) end
split_table(cluster_name, database_name, tbl_name, params)
click to toggle source
# File lib/dag/client/api/table.rb, line 71 def split_table(cluster_name, database_name, tbl_name, params) raise Dag::Client::ParameterInvalid.new('params is blank') if params.blank? input_object_keys = params[:input_object_keys] unless input_object_keys.instance_of?(Array) raise Dag::Client::ParameterInvalid.new('input_object_keys is not array') end raise Dag::Client::ParameterInvalid.new('input_object_keys is blank') if input_object_keys.blank? input_object_keys.each do |input_object_key| unless input_object_key.start_with?('dag://') raise Dag::Client::ParameterInvalid.new("input_object_key should start with 'dag://'") end end input_format = params[:input_format] raise Dag::Client::ParameterInvalid.new('input_format is blank') if input_format.blank? unless ['csv', 'tsv', 'json'].include?(input_format) raise Dag::Client::ParameterInvalid.new("input_format is invalid:#{input_format}") end parameters = { 'inputObjectKeys' => params[:input_object_keys], 'inputFormat' => input_format, 'outputDatabase' => database_name, 'outputTable' => tbl_name, 'clusterName' => cluster_name } label = params[:label] if label.present? parameters.merge!('label' => label) end schema = params[:schema] if schema.present? parameters.merge!('schema' => schema) end execute(RestParameter.new(:post, "/v1/", cano_resource: 'split', content_type: 'application/json', parameters: parameters)) end
table(cluster_name, database_name, tbl_name, params: {})
click to toggle source
# File lib/dag/client/api/table.rb, line 11 def table(cluster_name, database_name, tbl_name, params: {}) resource = %Q(/v1/#{cluster_name}/#{database_name}/#{tbl_name}) begin execute(RestParameter.new(:get, resource, cano_resource: 'table')) rescue Dag::Client::APIFailure => e raise e if e.api_code != "TableNotFound" nil end end
table_info_list(cluster_name, database_name, options = {})
click to toggle source
# File lib/dag/client/api/table.rb, line 6 def table_info_list(cluster_name, database_name, options = {}) resource = %Q(/v1/#{cluster_name}/#{database_name}) execute(RestParameter.new(:get, resource, cano_resource: 'table', query_params: list_params(options))) end
Private Instance Methods
default_schema(format)
click to toggle source
# File lib/dag/client/api/table.rb, line 119 def default_schema(format) case format when 'csv', 'tsv' 'v array<string>' when 'json' 'v map<string, string>' when 'json_agent' 'time int, v map<string, string>' end end