Class: Libertree::Model::Forest

Inherits:
Object
  • Object
show all
Defined in:
lib/libertree/model/forest.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all_local_is_memberObject



50
51
52
# File 'lib/libertree/model/forest.rb', line 50

def self.all_local_is_member
  where  local_is_member: true
end

Instance Method Details

#add(server) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/libertree/model/forest.rb', line 21

def add(server)
  DB.dbh[
    %{
      INSERT INTO forests_servers (
        forest_id, server_id
      ) SELECT
        ?, ?
      WHERE NOT EXISTS(
        SELECT 1
        FROM forests_servers fs2
        WHERE
          fs2.forest_id = ?
          AND fs2.server_id = ?
      )
    },
    self.id,
    server.id,
    self.id,
    server.id
  ].get
end

#local?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/libertree/model/forest.rb', line 47

def local?
  ! origin_server_id
end

#local_is_member?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/libertree/model/forest.rb', line 58

def local_is_member?
  local_is_member
end

#originObject



54
55
56
# File 'lib/libertree/model/forest.rb', line 54

def origin
  Server[origin_server_id]
end

#remove(server) ⇒ Object



43
44
45
# File 'lib/libertree/model/forest.rb', line 43

def remove(server)
  DB.dbh[ "DELETE FROM forests_servers WHERE forest_id = ? AND server_id = ?", self.id, server.id ].get
end

#set_trees_by_domain(domains) ⇒ Array(Model::Server)

Returns any new Server records that were created.

Parameters:

  • domains (Array(String))

Returns:

  • (Array(Model::Server))

    any new Server records that were created



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/libertree/model/forest.rb', line 64

def set_trees_by_domain(domains)
  DB.dbh[ "DELETE FROM forests_servers WHERE forest_id = ?", self.id ].get
  new_trees = []

  domains.each do |domain|
    tree = Model::Server[domain: domain]
    if tree.nil?
      tree = Model::Server.create(domain: domain)
      new_trees << tree
    end

    self.add tree
  end

  new_trees
end

#treesObject Also known as: servers



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/libertree/model/forest.rb', line 4

def trees
  Server.s(
    %{
      SELECT
        s.*
      FROM
          forests_servers fs
        , servers s
      WHERE
        fs.forest_id = ?
        AND s.id = fs.server_id
    },
    self.id
  )
end