class Sequel::Postgres::PropertyGraph::Generator::Element

  1. lib/sequel/adapters/shared/postgres.rb
Superclass: self

Base class for Vertex and Edge.

Methods

Public Class

  1. new

Public Instance

  1. data
  2. key
  3. label

Constants

Data = Struct.new(:name, :key, :labels)  

Public Class methods

new(name, opts=OPTS, &block)

name specifies the name of the vertex or edge. It can be an SQL::AliasedExpression to use an alias. Options:

:properties

Specifies fixed properties for the vertex or edge. If this is given, you cannot use the label method inside the block.

[show source]
    # File lib/sequel/adapters/shared/postgres.rb
284 def initialize(name, opts=OPTS, &block)
285   @name = name
286   @labels = []
287   if opts.key?(:properties)
288     @labels << [nil, opts[:properties]].freeze
289     @labels.freeze
290   end
291   instance_exec(&block) if block
292   @labels.freeze
293   freeze
294 end

Public Instance methods

data()
[show source]
    # File lib/sequel/adapters/shared/postgres.rb
296 def data
297   Data.new(@name, @key, @labels).freeze
298 end
key(columns)

Set the column(s) to use for the KEY clause, which are the columns that uniquely identify rows in the table:

key(:id)
# KEY (id)

key([:id1, :id2])
# KEY (id1, id2)
[show source]
    # File lib/sequel/adapters/shared/postgres.rb
308 def key(columns)
309   @key = Array(columns)
310 end
label(name, properties=:all)

Add a label and properties for the label for this vertex/edge.

A vertex or edge can have multiple labels with separate properties, if it wasn’t created with fixed properties. The name argument specifies the label name. The properties argument specifies the properties:

nil, :all

PROPERTIES ALL COLUMNS

false, :none, []

NO PROPERTIES

Array

Array of specific properties. Each element should be a Symbol, SQL::Identifier, or SQL::AliasedExpression.

label(:label_name)
# LABEL label_name PROPERTIES ALL COLUMNS

label(:label_name, [])
# LABEL label_name NO PROPERTIES

label(:label_name, [:c, Sequel[:b].as(:d)], Sequel[:e])
# LABEL label_name PROPERTIES (c, b AS d, e)
[show source]
    # File lib/sequel/adapters/shared/postgres.rb
330 def label(name, properties=:all)
331   if @labels.frozen?
332     raise Error, "cannot specify label for property graph vertex or edge with fixed properties"
333   end
334   @labels << [name, properties].freeze
335   nil
336 end