Sha256: e99fcf5d19caf2371af73a30d212798fd96d11c9525d6974a073ec43adcf3695

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

########################################################################################################################
# Defines database column
########################################################################################################################

require_relative 'abstract_column'
require_relative 'computed_column'
require_relative 'database_object'
require_relative 'table'
require_relative 'model_error'
require_relative 'view'

module Dbsketch
	module Model

		class Index < Database_Object
			def initialize name, target, columns, meaning: nil, comment: nil, dependencies: []
				super name, :meaning => meaning, :comment => comment, :dependencies => dependencies
				@columns = columns.is_a?(Array) ? columns : [columns]
				### Preconditions
				raise ArgumentError, "target is not a Dbsketch::Model::Table or a View" unless target.is_a? Table or target.is_a? View
				@columns.each_with_index do |column, index|
					raise ArgumentError, "columns[#{index}] is not a Dbsketch::Model::AbstractColumn" unless column.is_a? AbstractColumn
					raise ModelError, "computed column #{column.name} is not persisted" if column.is_a? ComputedColumn and not column.persisted
				end
				###
				@target = target
			end

			attr_reader :target, :columns

			def has_column? column_name
				### Preconditions
				raise ArgumentError, "column_name is not a String" unless column_name.is_a? String
				###
				nil != @columns.find { |c| c.name.downcase == column_name.downcase }
			end
		end

	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dbsketch-0.0.1 lib/dbsketch/model/index.rb