Class: AllegroGraph::Repository

Inherits:
Resource
  • Object
show all
Defined in:
lib/allegro_graph/repository.rb

Overview

The Repository class wrap the corresponding resource on the AllegroGraph server. A repository acts as a scope for statements. Simple management methods are provided.

Instance Attribute Summary collapse

Attributes inherited from Resource

#geometric, #mapping, #query, #statements

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(server_or_catalog, name) ⇒ Repository

Returns a new instance of Repository.



12
13
14
15
16
17
# File 'lib/allegro_graph/repository.rb', line 12

def initialize(server_or_catalog, name)
  super
  @catalog  = server_or_catalog.is_a?(AllegroGraph::Server) ? server_or_catalog.root_catalog : server_or_catalog
  @server   = @catalog.server
  @name     = name
end

Instance Attribute Details

#catalogObject (readonly)

Returns the value of attribute catalog.



9
10
11
# File 'lib/allegro_graph/repository.rb', line 9

def catalog
  @catalog
end

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/allegro_graph/repository.rb', line 10

def name
  @name
end

#serverObject (readonly)

Returns the value of attribute server.



8
9
10
# File 'lib/allegro_graph/repository.rb', line 8

def server
  @server
end

Class Method Details

.transaction(repository, &block) ⇒ Object



68
69
70
71
72
73
74
75
76
77
# File 'lib/allegro_graph/repository.rb', line 68

def self.transaction(repository, &block)
  session = Session.create repository
  begin
    session.instance_eval &block
  rescue Object => error
    session.rollback
    raise error
  end
  session.commit      
end

Instance Method Details

#==(other) ⇒ Object



19
20
21
# File 'lib/allegro_graph/repository.rb', line 19

def ==(other)
  other.is_a?(self.class) && self.catalog == other.catalog && self.name == other.name
end

#create!Object



35
36
37
38
39
40
41
# File 'lib/allegro_graph/repository.rb', line 35

def create!
  @server.request :put, self.path, :expected_status_code => 204
  true
rescue ExtendedTransport::UnexpectedStatusCodeError => error
  return false if error.status_code == 400
  raise error
end

#create_if_missing!Object



43
44
45
# File 'lib/allegro_graph/repository.rb', line 43

def create_if_missing!
  create! unless exists?
end

#delete!Object



47
48
49
50
51
52
53
# File 'lib/allegro_graph/repository.rb', line 47

def delete!
  @server.request :delete, self.path, :expected_status_code => 200
  true
rescue ExtendedTransport::UnexpectedStatusCodeError => error
  return false if error.status_code == 400
  raise error
end

#delete_if_exists!Object



55
56
57
# File 'lib/allegro_graph/repository.rb', line 55

def delete_if_exists!
  delete! if exists?
end

#exists?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/allegro_graph/repository.rb', line 31

def exists?
  @catalog.repositories.include? self
end

#pathObject



23
24
25
# File 'lib/allegro_graph/repository.rb', line 23

def path
  "#{@catalog.path}/repositories/#{@name}"
end

#request(http_method, path, options = { }) ⇒ Object



27
28
29
# File 'lib/allegro_graph/repository.rb', line 27

def request(http_method, path, options = { })
  @server.request http_method, path, options
end

#sizeObject



59
60
61
62
# File 'lib/allegro_graph/repository.rb', line 59

def size
  response = @server.request :get, self.path + "/size", :type => :text, :expected_status_code => 200
  response.to_i
end

#transaction(&block) ⇒ Object



64
65
66
# File 'lib/allegro_graph/repository.rb', line 64

def transaction(&block)
  self.class.transaction self, &block
end