Class: AnnotateRb::ModelAnnotator::UniqueConstraintAnnotation::AnnotationBuilder
- Inherits:
-
Object
- Object
- AnnotateRb::ModelAnnotator::UniqueConstraintAnnotation::AnnotationBuilder
- Defined in:
- lib/annotate_rb/model_annotator/unique_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/unique_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 |
# File 'lib/annotate_rb/model_annotator/unique_constraint_annotation/annotation_builder.rb', line 12 def build return Components::NilComponent.new if !@options[:show_unique_constraints] return Components::NilComponent.new unless @model.connection.respond_to?(:supports_unique_constraints?) && @model.connection.supports_unique_constraints? && @model.connection.respond_to?(:unique_constraints) unique_constraints = @model.connection.unique_constraints(@model.table_name) return Components::NilComponent.new if unique_constraints.empty? max_size = unique_constraints.map { |unique_constraint| unique_constraint.name.size }.max + 1 constraints = unique_constraints.sort_by(&:name).map do |unique_constraint| columns = Array(unique_constraint.column) details = "(#{columns.join(", ")})" if unique_constraint.deferrable details += " DEFERRABLE INITIALLY #{unique_constraint.deferrable.to_s.upcase}" end UniqueConstraintComponent.new(unique_constraint.name, details, max_size) end _annotation = Annotation.new(constraints) end |