Class: TreasureData::Schema

Inherits:
Object
  • Object
show all
Defined in:
lib/td/client/model.rb

Defined Under Namespace

Classes: Field

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fields = []) ⇒ Schema

Returns a new instance of Schema.

Parameters:

  • fields (Array) (defaults to: [])


312
313
314
# File 'lib/td/client/model.rb', line 312

def initialize(fields=[])
  @fields = fields
end

Instance Attribute Details

#fieldsObject (readonly)

Returns the value of attribute fields.



317
318
319
# File 'lib/td/client/model.rb', line 317

def fields
  @fields
end

Class Method Details

.parse(cols) ⇒ Schema

Parameters:

  • cols (String)

Returns:



303
304
305
306
307
308
309
# File 'lib/td/client/model.rb', line 303

def self.parse(cols)
  fields = cols.split(',').map {|col|
    name, type, *_ = col.split(':')
    Field.new(name, type)
  }
  Schema.new(fields)
end

Instance Method Details

#add_field(name, type) ⇒ Array

Parameters:

  • name (String)
  • type (String)

Returns:

  • (Array)


322
323
324
# File 'lib/td/client/model.rb', line 322

def add_field(name, type)
  @fields << Field.new(name, type)
end

#from_json(obj) ⇒ self

Parameters:

  • obj (Object)

Returns:

  • (self)


347
348
349
350
351
352
# File 'lib/td/client/model.rb', line 347

def from_json(obj)
  @fields = obj.map {|f|
    Field.new(f[0], f[1])
  }
  self
end

#merge(schema) ⇒ Schema

Parameters:

Returns:



328
329
330
331
332
333
334
335
336
337
338
# File 'lib/td/client/model.rb', line 328

def merge(schema)
  nf = @fields.dup
  schema.fields.each {|f|
    if i = nf.find_index {|sf| sf.name == f.name }
      nf[i] = f
    else
      nf << f
    end
  }
  Schema.new(nf)
end

#to_json(*args) ⇒ Array<Field>

Returns:



341
342
343
# File 'lib/td/client/model.rb', line 341

def to_json(*args)
  @fields.map {|f| [f.name, f.type] }.to_json(*args)
end