Module: Arcade::Api
- Extended by:
- Primitives
- Defined in:
- lib/arcade/api/operations.rb,
lib/arcade/api/primitives.rb
Defined Under Namespace
Modules: Primitives
Class Method Summary collapse
-
.create_database(name) ⇒ Object
—————————— create database ————————————————- # creates a database if not present #.
-
.create_document(database, type, **attributes) ⇒ Object
—————————— create document ————————————————- # adds a document to the specified database table.
-
.databases ⇒ Object
—————————— Service methods ————————————————- # —————————— ————————————————- # —————————— databases ————————————————- # returns an array of databases present on the database-server #.
-
.drop_database(name) ⇒ Object
—————————— drop database ————————————————- # deletes the given database #.
-
.execute(database, query = nil, session_id = nil) ⇒ Object
—————————— execute ————————————————- # executes a sql-query in the specified database.
-
.get_record(database, *rid) ⇒ Object
—————————— get_record ————————————————- # fetches a record by providing database and rid and returns the result as hash.
-
.index(database, type, name, *properties) ⇒ Object
—————————— index ————————————————- #.
-
.property(database, type, **args) ⇒ Object
—————————— property ————————————————- # Adds properties to the type.
-
.query(database, query) ⇒ Object
—————————— query ————————————————- # same for idempotent queries.
Methods included from Primitives
begin_transaction, commit, get_data, http, post_data, post_transaction, rollback
Class Method Details
.create_database(name) ⇒ Object
—————————— create database ————————————————- #
creates a database if not present #
37 38 39 40 41 42 43 44 45 |
# File 'lib/arcade/api/operations.rb', line 37 def self.create_database name return if databases.include?( name.to_s ) payload = { "command" => "create database #{name}" } post_data "server", payload rescue HTTPX::HTTPError => e logger.fatal "Create database #{name} through \"POST create/#{name}\" failed" logger.fatal e raise end |
.create_document(database, type, **attributes) ⇒ Object
—————————— create document ————————————————- # adds a document to the specified database table
specify database-fields as hash-type parameters
i.e Arcade::Api.create_document ‘devel’, ‘documents’, name: ‘herta meyer’, age: 56, sex: ‘f’
returns the rid of the inserted dataset
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/arcade/api/operations.rb', line 66 def self.create_document database, type, **attributes payload = { "@type" => type }.merge( attributes ) logger.debug "C: #{payload}" = if session.nil? payload else payload.merge headers: { "arcadedb-session-id" => session } end post_data "document/#{database}", end |
.databases ⇒ Object
—————————— Service methods ————————————————- # —————————— ————————————————- # —————————— databases ————————————————- #
returns an array of databases present on the database-server #
31 32 33 |
# File 'lib/arcade/api/operations.rb', line 31 def self.databases get_data 'databases' end |
.drop_database(name) ⇒ Object
—————————— drop database ————————————————- #
deletes the given database #
49 50 51 52 53 54 55 56 |
# File 'lib/arcade/api/operations.rb', line 49 def self.drop_database name return unless databases.include?( name.to_s ) payload = {"command" => "drop database #{name}" } post_data "server", payload rescue HTTPX::HTTPError => e logger.fatal "Drop database #{name} through \"POST drop database/#{name}\" failed" raise end |
.execute(database, query = nil, session_id = nil) ⇒ Object
—————————— execute ————————————————- # executes a sql-query in the specified database
the query is provided as block
returns an Array of results (if propriate) i.e Arcade::Api.execute( “devel” ) { ‘select from test ’ }
=y [{"@rid"=>"#57:0", "@type"=>"test", "name"=>"Hugo"}, {"@rid"=>"#60:0", "@type"=>"test", "name"=>"Hubert"}]
87 88 89 90 91 92 93 94 |
# File 'lib/arcade/api/operations.rb', line 87 def self.execute database, query=nil, session_id= nil pl = query.nil? ? provide_payload(yield) : provide_payload(query) if session_id.nil? && session.nil? post_data "command/#{database}" , pl else post_transaction "command/#{database}" , pl, session_id || session end end |
.get_record(database, *rid) ⇒ Object
—————————— get_record ————————————————- # fetches a record by providing database and rid and returns the result as hash
> Api.get_record ‘devel’, ‘225:6’ > Api.get_record ‘devel’, 225, 6 > Api.get_record ‘devel’, ‘#225:6’
=> {:@out=>0, :@rid=>"#225:6", :@in=>0, :@type=>"my_names", :name=>"Zaber", :@cat=>"v"}
111 112 113 114 115 116 117 118 119 |
# File 'lib/arcade/api/operations.rb', line 111 def self.get_record database, *rid rid = rid.join(':') rid = rid[1..-1] if rid[0]=="#" if rid.rid? get_data "document/#{database}/#{rid}" else raise Error "Get requires a rid input" end end |
.index(database, type, name, *properties) ⇒ Object
—————————— index ————————————————- #
157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/arcade/api/operations.rb', line 157 def self.index database, type, name , *properties properties = properties.map( &:to_s ) unique_requested = "unique" if properties.delete("unique") unique_requested = "notunique" if properties.delete("notunique" ) automatic = true if properties << name if properties.empty? # puts " create index #{type.to_s}[#{name.to_s}] on #{type} ( #{properties.join(',')} ) #{unique_requested}" # VV 22.10: providing an index-name raises an Error ( Encountered " "(" "( "" at line 1, column 44. Was expecting one of: <EOF> <SCHEMA> ... <NULL_STRATEGY> ... ";" ... "," ... )) ) # named indices droped for now success = execute(database) {" create index IF NOT EXISTS on #{type} (#{properties.join(', ')}) #{unique_requested}" } &.first # puts "success: #{success}" success[:operation] == 'create index' end |
.property(database, type, **args) ⇒ Object
—————————— property ————————————————- # Adds properties to the type
call via
Api.property <database>, <type>, name1: a_format , name2: a_format
Format is one of
Boolean, Integer, Short, Long, Float, Double, String
Datetime, Binary, Byte, Decimal, Link
Embedded, EmbeddedList, EmbeddedMap
In case of an Error, anything is rolled back and nil is returned
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/arcade/api/operations.rb', line 134 def self.property database, type, **args begin_transaction database success = args.map do | name, format | r= execute(database) {" create property #{type.to_s}.#{name.to_s} #{format.to_s} " } &.first puts "R: #{r.inspect}" if r.nil? false else r[:operation] == 'create property' end end.uniq if success == [true] commit database true else rollback database end end |
.query(database, query) ⇒ Object
—————————— query ————————————————- # same for idempotent queries
98 99 100 |
# File 'lib/arcade/api/operations.rb', line 98 def self.query database, query post_data "query/#{database}" , provide_payload(query) end |