Sha256: 9eb3eefd157cd70bf1b99e05beb2cf388ba89be46ae9bd0237f5f33855e85ef7

Contents?: true

Size: 742 Bytes

Versions: 12

Compression:

Stored size: 742 Bytes

Contents

module Storey
  class SchemaName < String
    RESERVED_SCHEMAS = %w(hstore)

    easy_class_to_instance

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

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

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

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

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

  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
storey-2.2.0 lib/storey/schema_name.rb
storey-2.1.2 lib/storey/schema_name.rb
storey-2.1.1 lib/storey/schema_name.rb
storey-2.1.0 lib/storey/schema_name.rb
storey-2.0.2 lib/storey/schema_name.rb
storey-2.0.1 lib/storey/schema_name.rb
storey-2.0.0 lib/storey/schema_name.rb
storey-1.0.0 lib/storey/schema_name.rb
storey-0.6.0 lib/storey/schema_name.rb
storey-0.5.2 lib/storey/schema_name.rb
storey-0.5.1 lib/storey/schema_name.rb
storey-0.5.0 lib/storey/schema_name.rb