Class: AnnotateRb::ModelAnnotator::ExclusionConstraintAnnotation::AnnotationBuilder
- Inherits:
-
Object
- Object
- AnnotateRb::ModelAnnotator::ExclusionConstraintAnnotation::AnnotationBuilder
- Defined in:
- lib/annotate_rb/model_annotator/exclusion_constraint_annotation/annotation_builder.rb
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(model, options) ⇒ AnnotationBuilder
constructor
A new instance of AnnotationBuilder.
Constructor Details
#initialize(model, options) ⇒ AnnotationBuilder
Returns a new instance of AnnotationBuilder.
7 8 9 10 |
# File 'lib/annotate_rb/model_annotator/exclusion_constraint_annotation/annotation_builder.rb', line 7 def initialize(model, ) @model = model @options = end |
Instance Method Details
#build ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/annotate_rb/model_annotator/exclusion_constraint_annotation/annotation_builder.rb', line 12 def build return Components::NilComponent.new if !@options[:show_exclusion_constraints] return Components::NilComponent.new unless @model.connection.respond_to?(:supports_exclusion_constraints?) && @model.connection.supports_exclusion_constraints? && @model.connection.respond_to?(:exclusion_constraints) exclusion_constraints = @model.connection.exclusion_constraints(@model.table_name) return Components::NilComponent.new if exclusion_constraints.empty? max_size = exclusion_constraints.map { |exclusion_constraint| exclusion_constraint.name.size }.max + 1 constraints = exclusion_constraints.sort_by(&:name).map do |exclusion_constraint| details = "(#{exclusion_constraint.expression})" details += " USING #{exclusion_constraint.using}" if exclusion_constraint.using details += " WHERE (#{exclusion_constraint.where})" if exclusion_constraint.where if exclusion_constraint.deferrable details += " DEFERRABLE INITIALLY #{exclusion_constraint.deferrable.to_s.upcase}" end ExclusionConstraintComponent.new(exclusion_constraint.name, details, max_size) end _annotation = Annotation.new(constraints) end |