Class: Arango::Foxx

Inherits:
Object
  • Object
show all
Includes:
Database_Return, Helper_Error, Helper_Return
Defined in:
lib/Foxx.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Database_Return

#database=

Methods included from Helper_Return

#return_delete, #return_directly?, #return_element

Methods included from Helper_Error

#satisfy_category?, #satisfy_class?, #warning_deprecated

Constructor Details

#initialize(database:, body: {}, mount:, development: nil, legacy: nil, provides: nil, name: nil, version: nil, type: "application/json", setup: nil, teardown: nil, cache_name: nil) ⇒ Foxx

Returns a new instance of Foxx.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/Foxx.rb', line 30

def initialize(database:, body: {}, mount:, development: nil, legacy: nil,
  provides: nil, name: nil, version: nil, type: "application/json",
  setup: nil, teardown: nil, cache_name: nil)
  assign_database(database)
  unless cache_name.nil?
    @cache_name = cache_name
    @server.cache.save(:foxx, cache_name, self)
  end
  assign_attributes(body)
  assign_type(type)
  @mount       ||= mount
  @development ||= development
  @setup       ||= setup
  @legacy      ||= legacy
  @provides    ||= provides
  @name        ||= name
  @version     ||= version
  @teardown    ||= teardown
end

Instance Attribute Details

#bodyObject

DEFINE ===



52
53
54
# File 'lib/Foxx.rb', line 52

def body
  @body
end

#cache_nameObject (readonly)

DEFINE ===



52
53
54
# File 'lib/Foxx.rb', line 52

def cache_name
  @cache_name
end

#databaseObject (readonly)

DEFINE ===



52
53
54
# File 'lib/Foxx.rb', line 52

def database
  @database
end

#developmentObject

Returns the value of attribute development.



53
54
55
# File 'lib/Foxx.rb', line 53

def development
  @development
end

#legacyObject

Returns the value of attribute legacy.



53
54
55
# File 'lib/Foxx.rb', line 53

def legacy
  @legacy
end

#mountObject

Returns the value of attribute mount.



53
54
55
# File 'lib/Foxx.rb', line 53

def mount
  @mount
end

#nameObject

Returns the value of attribute name.



53
54
55
# File 'lib/Foxx.rb', line 53

def name
  @name
end

#providesObject

Returns the value of attribute provides.



53
54
55
# File 'lib/Foxx.rb', line 53

def provides
  @provides
end

#serverObject (readonly)

DEFINE ===



52
53
54
# File 'lib/Foxx.rb', line 52

def server
  @server
end

#setupObject

Returns the value of attribute setup.



53
54
55
# File 'lib/Foxx.rb', line 53

def setup
  @setup
end

#teardownObject

Returns the value of attribute teardown.



53
54
55
# File 'lib/Foxx.rb', line 53

def teardown
  @teardown
end

#typeObject

DEFINE ===



52
53
54
# File 'lib/Foxx.rb', line 52

def type
  @type
end

#versionObject

Returns the value of attribute version.



53
54
55
# File 'lib/Foxx.rb', line 53

def version
  @version
end

Class Method Details

.new(*args) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/Foxx.rb', line 9

def self.new(*args)
  hash = args[0]
  super unless hash.is_a?(Hash)
  database = hash[:database]
  if database.is_a?(Arango::Database) && database.server.active_cache && !hash[:mount].nil?
    cache_name = "#{database.name}/#{hash[:mount]}"
    cached = database.server.cache.cache.dig(:foxx, cache_name)
    if cached.nil?
      hash[:cache_name] = cache_name
      return super
    else
      body = hash[:body] || {}
      [:mount, :development, :legacy, :provides, :name, :version,
        :type, :setup, :teardown].each{|k| body[k] ||= hash[k]}
      cached.assign_attributes(body)
      return cached
    end
  end
  super
end

Instance Method Details

#commit(body:, replace: nil) ⇒ Object



272
273
274
275
# File 'lib/Foxx.rb', line 272

def commit(body:, replace: nil)
  query = {"replace": replace}
  @database.request("POST", "_api/foxx/commit", body: body, query: query)
end

#create(body: @body, type: @type, development: @development, setup: @setup, legacy: @legacy) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/Foxx.rb', line 120

def create(body: @body, type: @type, development: @development,
  setup: @setup, legacy: @legacy)
  headers = {"Accept": type}
  skip_to_json = type != "application/json"
  query = {
    "mount":        @mount,
    "setup":        setup,
    "development ": development ,
    "legacy":       legacy
  }
  result = @database.request("POST",
    url: "_api/foxx", body: body, headers: headers,
    skip_to_json: skip_to_json, query: query)
  return_foxx(result)
end

#destroy(teardown: @teardown) ⇒ Object



136
137
138
139
140
141
142
143
# File 'lib/Foxx.rb', line 136

def destroy(teardown: @teardown)
  query = {
    "mount":    @mount,
    "teardown": teardown
  }
  result = @database.request("DELETE", "_api/foxx/service", query: query)
  return_foxx(result)
end

#disableDevelopmentObject



250
251
252
253
# File 'lib/Foxx.rb', line 250

def disableDevelopment
  query = {"mount": @mount}
  @database.request("DELETE", "_api/foxx/development", query: query)
end

#download(path:, warning: @server.warning) ⇒ Object



265
266
267
268
269
270
# File 'lib/Foxx.rb', line 265

def download(path:, warning: @server.warning)
  query = {"mount": @mount}
  @server.download("POST", "_db/#{@database.name}/_api/foxx/download",
    path: path, query: query)
  puts "File saved in #{path}" if warning
end

#enableDevelopmentObject



245
246
247
248
# File 'lib/Foxx.rb', line 245

def enableDevelopment
  query = {"mount": @mount}
  @database.request("POST", "_api/foxx/development", query: query)
end

#readmeObject



255
256
257
258
# File 'lib/Foxx.rb', line 255

def readme
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/readme", query: query)
end

#replace(body: @body, type: @type, teardown: @teardown, setup: @setup, legacy: @legacy) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/Foxx.rb', line 145

def replace(body: @body, type: @type, teardown: @teardown, setup: @setup,
  legacy: @legacy)
  headers = {"Accept": type}
  skip_to_json = type != "application/json"
  query = {
    "mount": @mount,
    "setup": setup,
    "development ": development,
    "legacy": legacy
  }
  result = @database.request("PUT", "_api/foxx/service", body: body,
    headers: headers, skip_to_json: skip_to_json, query: query)
  return_foxx(result)
end

#replaceConfiguration(body:) ⇒ Object



190
191
192
193
194
# File 'lib/Foxx.rb', line 190

def replaceConfiguration(body:)
  query = {"mount": @mount}
  result = @database.request("PUT", "_api/foxx/configuration", query: query, body: body)
  return_foxx(result, :configuration)
end

#replaceDependencies(body:) ⇒ Object



210
211
212
213
214
# File 'lib/Foxx.rb', line 210

def replaceDependencies(body:)
  query = {"mount": @mount}
  result = @database.request("PUT", "_api/foxx/dependencies", query: query, body: body)
  return_foxx(result, :dependencies)
end

#retrieveObject

ACTIONS ===



114
115
116
117
118
# File 'lib/Foxx.rb', line 114

def retrieve
  query = {"mount": @mount}
  result = @database.request("GET", url: "_api/foxx/service")
  return_foxx(result)
end

#retrieveConfigurationObject

CONFIGURATION ===



178
179
180
181
182
# File 'lib/Foxx.rb', line 178

def retrieveConfiguration
  query = {"mount": @mount}
  result = @database.request("GET", "_api/foxx/configuration", query: query)
  return_foxx(result, :configuration)
end

#retrieveDependenciesObject

DEPENDENCY ===



198
199
200
201
202
# File 'lib/Foxx.rb', line 198

def retrieveDependencies
  query = {"mount": @mount}
  result = @database.request("GET", "_api/foxx/dependencies", query: query)
  return_foxx(result, :dependencies)
end

#run_script(name:, body: {}) ⇒ Object



223
224
225
226
# File 'lib/Foxx.rb', line 223

def run_script(name:, body: {})
  query = {"mount": @mount}
  @database.request("POST", "_api/foxx/scripts/#{name}", query: query, body: body)
end

#scriptsObject

MISCELLANEOUS



218
219
220
221
# File 'lib/Foxx.rb', line 218

def scripts
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/scripts", query: query)
end

#swaggerObject



260
261
262
263
# File 'lib/Foxx.rb', line 260

def swagger
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/swagger", query: query)
end

#tests(reporter: nil, idiomatic: nil) ⇒ Object



228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/Foxx.rb', line 228

def tests(reporter: nil, idiomatic: nil)
  satisfy_category?(reporter, [nil, "default", "suite", "stream", "xunit", "tap"])
  headers = {}
  headers[:"Content-Type"] = case reporter
  when "stream"
    "application/x-ldjson"
  when "tap"
    "text/plain, text/*"
  when "xunit"
    "application/xml, text/xml"
  else
    nil
  end
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/scripts", query: query, headers: headers)
end

#to_hObject

TO HASH ===



83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/Foxx.rb', line 83

def to_h
  {
    "name": @name,
    "version": @version,
    "mount": @mount,
    "development": @development,
    "legacy": @legacy,
    "provides": @provides,
    "type": @type,
    "teardown": @teardown,
    "cache_name": @cache_name,
    "database": @database.name
  }.delete_if{|k,v| v.nil?}
end

#update(body: @body, type: @type, teardown: @teardown, setup: @setup, legacy: @legacy) ⇒ Object



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/Foxx.rb', line 160

def update(body: @body, type: @type, teardown: @teardown,
  setup: @setup, legacy: @legacy)
  assign_type(type)
  headers = {"Accept": type}
  skip_to_json = @type != "application/json"
  query = {
    "mount":        @mount,
    "setup":        setup,
    "development ": development,
    "legacy":       legacy
  }
  result = @database.request("PATCH", "_api/foxx/service", body: body,
    headers: headers, skip_to_json: skip_to_json, query: query)
  return_foxx(result)
end

#updateConfiguration(body:) ⇒ Object



184
185
186
187
188
# File 'lib/Foxx.rb', line 184

def updateConfiguration(body:)
  query = {"mount": @mount}
  result = @database.request("PATCH", "_api/foxx/configuration", query: query, body: body)
  return_foxx(result, :configuration)
end

#updateDependencies(body:) ⇒ Object



204
205
206
207
208
# File 'lib/Foxx.rb', line 204

def updateDependencies(body:)
  query = {"mount": @mount}
  result = @database.request("PATCH", "_api/foxx/dependencies", query: query, body: body)
  return_foxx(result, :dependencies)
end