class OrientdbSchemaMigrator::Migration

Public Class Methods

add_index(class_name, property_name, index_name, type) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 56
def self.add_index class_name, property_name, index_name, type
  assert_class_exists!(class_name)
  assert_property_exists!(class_name, property_name)
  assert_index_not_exists!(class_name, index_name)
  OrientdbSchemaMigrator.client.command "create index #{index_name} on #{class_name} (#{property_name}) #{type}"
end
add_property(class_name, property_name, type, property_options={}) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 38
def self.add_property class_name, property_name, type, property_options={}
  assert_class_exists!(class_name)
  assert_property_not_exists!(class_name, property_name)
  OrientdbSchemaMigrator.client.create_property class_name,property_name,type, property_options
end
alter_property(class_name, property_name, attribute_name, new_value) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 50
def self.alter_property class_name, property_name, attribute_name, new_value
  assert_class_exists!(class_name)
  assert_property_exists!(class_name, property_name)
  OrientdbSchemaMigrator.client.command "alter property #{class_name}.#{property_name} #{attribute_name} #{new_value}"
end
assert_class_exists!(class_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 91
def self.assert_class_exists!(class_name)
  fail MigrationError.new("Class #{class_name} does not exist") unless class_exists?(class_name)
end
assert_class_not_exists!(class_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 95
def self.assert_class_not_exists!(class_name)
  fail MigrationError.new("Class #{class_name} already exists") unless !class_exists?(class_name)
end
assert_index_not_exists!(class_name, index) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 107
def self.assert_index_not_exists!(class_name, index)
  fail MigrationError.new("#{class_name},#{index} already exists") unless !index_exists?(class_name, index)
end
assert_property_exists!(class_name, property) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 99
def self.assert_property_exists!(class_name, property)
  fail MigrationError.new("#{class_name}.#{property} does not exist") unless property_exists?(class_name, property)
end
assert_property_not_exists!(class_name, property) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 103
def self.assert_property_not_exists!(class_name, property)
  fail MigrationError.new("#{class_name}.#{property} already exists") unless !property_exists?(class_name, property)
end
class_exists?(class_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 67
def self.class_exists? class_name
  OrientdbSchemaMigrator.client.class_exists? class_name
end
create_class(class_name, class_options={}) { |proxy| ... } click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 5
def self.create_class class_name, class_options={}
  # check if class exists first
  assert_class_not_exists!(class_name)
  OrientdbSchemaMigrator.client.create_class class_name, class_options
  if block_given?
    proxy = Proxy.new(self, class_name)
    yield proxy
  end
end
drop_class(class_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 15
def self.drop_class class_name
  # check if class exists first
  if class_exists?(class_name)
    # delete vertices/edges first
    super_class = OrientdbSchemaMigrator.client.get_class(class_name)["superClass"]
    if super_class == "V"
      OrientdbSchemaMigrator.client.command "delete vertex #{class_name}"
    elsif super_class == "E"
      OrientdbSchemaMigrator.client.command "delete edge #{class_name}"
    end
    # drop class
    OrientdbSchemaMigrator.client.command "drop class #{class_name}"
    return true
  else
    return false
  end
end
drop_index(index_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 63
def self.drop_index index_name
  OrientdbSchemaMigrator.client.command "drop index #{index_name}"
end
drop_property(class_name, property_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 44
def self.drop_property class_name, property_name
  assert_class_exists!(class_name)
  assert_property_exists!(class_name, property_name)
  OrientdbSchemaMigrator.client.command "drop property #{class_name}.#{property_name}"
end
index_exists?(class_name, index_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 71
def self.index_exists?(class_name, index_name)
  return false unless class_exists?(class_name)
  indexes = OrientdbSchemaMigrator.client.get_class(class_name)["indexes"]
  return false unless indexes
  return indexes.any? { |idx| idx['name'] == index_name }
end
property_exists?(class_name, property_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 78
def self.property_exists? class_name, property_name
  if class_exists? class_name
    properties = OrientdbSchemaMigrator.client.get_class(class_name)["properties"]
    if properties
      return properties.collect{|i| i["name"]}.include? property_name
    else
      return false
    end
  else
    return false
  end
end
rename_class(old_name, new_name) click to toggle source
# File lib/orientdb_schema_migrator/migration.rb, line 33
def self.rename_class old_name, new_name
  assert_class_exists!(old_name)
  OrientdbSchemaMigrator.client.command "alter class #{old_name} name #{new_name}"
end