Class: Storey::SchemaName

Inherits:
String
  • Object
show all
Defined in:
lib/storey/schema_name.rb

Constant Summary collapse

RESERVED_SCHEMAS =
%w(hstore)

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ SchemaName

Returns a new instance of SchemaName.



7
8
9
10
11
12
13
14
# File 'lib/storey/schema_name.rb', line 7

def initialize(name)
  @name = if @name.respond_to?(:to_s)
            name.to_s
          else
            name
          end
  super @name
end

Instance Method Details

#reserved?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/storey/schema_name.rb', line 21

def reserved?
  RESERVED_SCHEMAS.include?(@name)
end

#valid?Boolean

Returns:

  • (Boolean)


16
17
18
19
# File 'lib/storey/schema_name.rb', line 16

def valid?
  (@name =~ /^[^0-9][\w]*$/ || @name == '"$user"') &&
    @name !~ /^pg_/
end

#validate_format!Object



25
26
27
28
29
# File 'lib/storey/schema_name.rb', line 25

def validate_format!
  unless self.valid?
    raise SchemaInvalid, "`#{@name}` is not a valid schema name"
  end
end

#validate_reserved!Object



31
32
33
34
35
# File 'lib/storey/schema_name.rb', line 31

def validate_reserved!
  if self.reserved?
    raise SchemaReserved, "`#{@name}` is a reserved schema name"
  end
end