Class: LedgerSync::Ledgers::NetSuite::Record::Metadata

Inherits:
Object
  • Object
show all
Defined in:
lib/ledger_sync/ledgers/netsuite/record/metadata.rb

Overview

Helper class for retrieving record metadata:

  • available http_methods

  • record properties/attributes

Constant Summary collapse

BASE_PATH =
'metadata-catalog'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client:, record:) ⇒ Metadata

Returns a new instance of Metadata.



18
19
20
21
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 18

def initialize(client:, record:)
  @client = client
  @record = record
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



15
16
17
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 15

def client
  @client
end

#recordObject (readonly)

Returns the value of attribute record.



15
16
17
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 15

def record
  @record
end

Instance Method Details

#createObject



23
24
25
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 23

def create
  @create ||= http_methods.find { |e| e.key == "post /#{record}" }
end

#deleteObject



27
28
29
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 27

def delete
  @delete ||= http_methods.find { |e| e.key == "delete /#{record}/{id}" }
end

#findObject



31
32
33
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 31

def find
  @find ||= show
end

#http_methodsObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 35

def http_methods
  @http_methods ||= begin
    ret = []

    .body['paths'].each do |path, path_data|
      path_data.each do |method, method_data|
        ret << HTTPMethod.new_from_hash(
          method_data.merge(
            method: method,
            path: path
          )
        )
      end
    end

    ret
  end
end

#indexObject



54
55
56
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 54

def index
  @index ||= http_methods.find { |e| e.key == "get /#{record}" }
end

#metadata_responseObject



58
59
60
61
62
63
64
65
66
67
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 58

def 
  @metadata_response = begin
    client.get(
      headers: {
        'Accept' => 'application/swagger+json'
      },
      path: "#{BASE_PATH}?select=#{record}"
    )
  end
end

#patchObject



86
87
88
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 86

def patch
  @patch ||= http_methods.find { |e| e.key == "patch /#{record}/{id}" }
end

#propertiesObject



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 69

def properties
  @properties ||= begin
    ret = []
    props = .body['components']['schemas'][record.to_s]['properties']
    props.map do |key, prop|
      next unless prop.key?('title')

      ret << Property.new_from_hash(
        prop.merge(
          key: key
        )
      )
    end
    ret
  end
end

#showObject



90
91
92
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 90

def show
  @show ||= http_methods.find { |e| e.key == "get /#{record}/{id}" }
end

#updateObject



94
95
96
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 94

def update
  @update ||= http_methods.find { |e| e.key == "patch /#{record}/{id}" }
end

#upsertObject



98
99
100
# File 'lib/ledger_sync/ledgers/netsuite/record/metadata.rb', line 98

def upsert
  @upsert ||= http_methods.find { |e| e.key == "put /#{record}/{id}" }
end