diff options
| author | Xinhui | 2016-05-11 15:06:11 +0200 | 
|---|---|---|
| committer | Xinhui | 2016-05-11 15:06:11 +0200 | 
| commit | 781142afdb90bb0ca62783435f582725794f4f57 (patch) | |
| tree | 83d37e168f4cd02422088c0c15d39160c1e6a8bd | |
| parent | f0b822710320a3dde22782334b436b87f5d47054 (diff) | |
| download | chouette-core-781142afdb90bb0ca62783435f582725794f4f57.tar.bz2 | |
Disable Line foreign key
Refs #825
| -rw-r--r-- | app/models/chouette/group_of_line.rb | 8 | ||||
| -rw-r--r-- | db/migrate/20160511094753_disable_line_foreign_keys.rb | 21 | ||||
| -rw-r--r-- | db/schema.rb | 64 | ||||
| -rw-r--r-- | spec/models/chouette/active_record_spec.rb | 16 | ||||
| -rw-r--r-- | spec/models/chouette/group_of_line_spec.rb | 2 | 
5 files changed, 72 insertions, 39 deletions
| diff --git a/app/models/chouette/group_of_line.rb b/app/models/chouette/group_of_line.rb index f00db3164..9443a34e5 100644 --- a/app/models/chouette/group_of_line.rb +++ b/app/models/chouette/group_of_line.rb @@ -2,17 +2,17 @@ class Chouette::GroupOfLine < Chouette::TridentActiveRecord    include GroupOfLineRestrictions    # FIXME http://jira.codehaus.org/browse/JRUBY-6358    self.primary_key = "id" -   +    has_and_belongs_to_many :lines, :class_name => 'Chouette::Line', :order => 'lines.name'    validates_presence_of :name    attr_reader :line_tokens -   +    def self.nullable_attributes      [:comment]    end -   +    def commercial_stop_areas      Chouette::StopArea.joins(:children => [:stop_points => [:route => [:line => :group_of_lines] ] ]).where(:group_of_lines => {:id => self.id}).uniq    end @@ -20,7 +20,7 @@ class Chouette::GroupOfLine < Chouette::TridentActiveRecord    def stop_areas      Chouette::StopArea.joins(:stop_points => [:route => [:line => :group_of_lines] ]).where(:group_of_lines => {:id => self.id})    end -   +    def line_tokens=(ids)      self.line_ids = ids.split(",")    end diff --git a/db/migrate/20160511094753_disable_line_foreign_keys.rb b/db/migrate/20160511094753_disable_line_foreign_keys.rb new file mode 100644 index 000000000..ffc665344 --- /dev/null +++ b/db/migrate/20160511094753_disable_line_foreign_keys.rb @@ -0,0 +1,21 @@ +class DisableLineForeignKeys < ActiveRecord::Migration +  def change +    disable_foreign_key :lines, :line_company_fkey +    disable_foreign_key :lines, :line_ptnetwork_fkey +    disable_foreign_key :routing_constraints_lines, :routingconstraint_line_fkey +    disable_foreign_key :routes, :route_line_fkey +    disable_foreign_key :group_of_lines_lines, :groupofline_line_fkey +  end + +  def disable_foreign_key(table, name) +    if foreign_key?(table, name) +      remove_foreign_key table, name: name +    end +  end + +  def foreign_key?(table, name) +    @connection.foreign_keys(table).any? do |foreign_key| +      foreign_key.options[:name] == name.to_s +    end +  end +end diff --git a/db/schema.rb b/db/schema.rb index 61f64707f..dcd0e162f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@  #  # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160511082825) do +ActiveRecord::Schema.define(version: 20160511094753) do    # These are extensions that must be enabled in order to support this database    enable_extension "plpgsql" @@ -209,18 +209,6 @@ ActiveRecord::Schema.define(version: 20160511082825) do      t.integer "line_id",          limit: 8    end -  create_table "jobs", force: true do |t| -    t.string   "action" -    t.datetime "created" -    t.string   "filename" -    t.text     "parameters" -    t.string   "referential" -    t.datetime "started" -    t.string   "status" -    t.string   "type" -    t.datetime "updated" -  end -    create_table "journey_frequencies", force: true do |t|      t.integer  "vehicle_journey_id",         limit: 8      t.time     "scheduled_headway_interval",                           null: false @@ -249,7 +237,7 @@ ActiveRecord::Schema.define(version: 20160511082825) do    create_table "journey_patterns", force: true do |t|      t.integer  "route_id",                limit: 8 -    t.string   "objectid",                                       null: false +    t.string   "objectid",                                      null: false      t.integer  "object_version"      t.datetime "creation_time"      t.string   "creator_id" @@ -259,12 +247,10 @@ ActiveRecord::Schema.define(version: 20160511082825) do      t.string   "published_name"      t.integer  "departure_stop_point_id", limit: 8      t.integer  "arrival_stop_point_id",   limit: 8 -    t.integer  "route_section_ids",                 default: [],              array: true -    t.integer  "section_status",                    default: 0,  null: false +    t.integer  "section_status",                    default: 0, null: false    end    add_index "journey_patterns", ["objectid"], :name => "journey_patterns_objectid_key", :unique => true -  add_index "journey_patterns", ["route_section_ids"], :name => "index_journey_patterns_on_route_section_ids"    create_table "journey_patterns_stop_points", id: false, force: true do |t|      t.integer "journey_pattern_id", limit: 8 @@ -310,12 +296,6 @@ ActiveRecord::Schema.define(version: 20160511082825) do    add_index "lines", ["objectid"], :name => "lines_objectid_key", :unique => true    add_index "lines", ["registration_number"], :name => "lines_registration_number_key" -  create_table "links", id: false, force: true do |t| -    t.integer "job_id", limit: 8, null: false -    t.string  "rel" -    t.string  "type" -  end -    create_table "networks", force: true do |t|      t.string   "objectid",            null: false      t.integer  "object_version" @@ -373,8 +353,8 @@ ActiveRecord::Schema.define(version: 20160511082825) do    end    create_table "route_sections", force: true do |t| -    t.integer  "departure_id" -    t.integer  "arrival_id" +    t.integer  "departure_id",       limit: 8 +    t.integer  "arrival_id",         limit: 8      t.string   "objectid",                                                       null: false      t.integer  "object_version"      t.datetime "creation_time" @@ -627,12 +607,44 @@ ActiveRecord::Schema.define(version: 20160511082825) do    add_index "vehicle_journeys", ["route_id"], :name => "index_vehicle_journeys_on_route_id"    Foreigner.load +  add_foreign_key "access_links", "access_points", name: "aclk_acpt_fkey", dependent: :delete + +  add_foreign_key "group_of_lines_lines", "group_of_lines", name: "groupofline_group_fkey", dependent: :delete +    add_foreign_key "journey_frequencies", "timebands", name: "journey_frequencies_timeband_id_fk", dependent: :nullify    add_foreign_key "journey_frequencies", "vehicle_journeys", name: "journey_frequencies_vehicle_journey_id_fk", dependent: :nullify    add_foreign_key "journey_pattern_sections", "journey_patterns", name: "journey_pattern_sections_journey_pattern_id_fk", dependent: :delete    add_foreign_key "journey_pattern_sections", "route_sections", name: "journey_pattern_sections_route_section_id_fk", dependent: :delete -  add_foreign_key "links", "jobs", name: "fk_n5ypxycc1stckgkm6ust2l6on" +  add_foreign_key "journey_patterns", "routes", name: "jp_route_fkey", dependent: :delete +  add_foreign_key "journey_patterns", "stop_points", name: "arrival_point_fkey", column: "arrival_stop_point_id", dependent: :nullify +  add_foreign_key "journey_patterns", "stop_points", name: "departure_point_fkey", column: "departure_stop_point_id", dependent: :nullify + +  add_foreign_key "journey_patterns_stop_points", "journey_patterns", name: "jpsp_jp_fkey", dependent: :delete +  add_foreign_key "journey_patterns_stop_points", "stop_points", name: "jpsp_stoppoint_fkey", dependent: :delete + +  add_foreign_key "routes", "routes", name: "route_opposite_route_fkey", column: "opposite_route_id", dependent: :nullify + +  add_foreign_key "stop_areas", "stop_areas", name: "area_parent_fkey", column: "parent_id", dependent: :nullify + +  add_foreign_key "stop_areas_stop_areas", "stop_areas", name: "stoparea_child_fkey", column: "child_id", dependent: :delete +  add_foreign_key "stop_areas_stop_areas", "stop_areas", name: "stoparea_parent_fkey", column: "parent_id", dependent: :delete + +  add_foreign_key "stop_points", "routes", name: "stoppoint_route_fkey", dependent: :delete + +  add_foreign_key "time_table_dates", "time_tables", name: "tm_date_fkey", dependent: :delete + +  add_foreign_key "time_table_periods", "time_tables", name: "tm_period_fkey", dependent: :delete + +  add_foreign_key "time_tables_vehicle_journeys", "time_tables", name: "vjtm_tm_fkey", dependent: :delete +  add_foreign_key "time_tables_vehicle_journeys", "vehicle_journeys", name: "vjtm_vj_fkey", dependent: :delete + +  add_foreign_key "vehicle_journey_at_stops", "stop_points", name: "vjas_sp_fkey", dependent: :delete +  add_foreign_key "vehicle_journey_at_stops", "vehicle_journeys", name: "vjas_vj_fkey", dependent: :delete + +  add_foreign_key "vehicle_journeys", "companies", name: "vj_company_fkey", dependent: :nullify +  add_foreign_key "vehicle_journeys", "journey_patterns", name: "vj_jp_fkey", dependent: :delete +  add_foreign_key "vehicle_journeys", "routes", name: "vj_route_fkey", dependent: :delete  end diff --git a/spec/models/chouette/active_record_spec.rb b/spec/models/chouette/active_record_spec.rb index 087e41576..110807e51 100644 --- a/spec/models/chouette/active_record_spec.rb +++ b/spec/models/chouette/active_record_spec.rb @@ -7,9 +7,9 @@ describe Chouette::ActiveRecord, :type => :model do    describe "table_name" do      it "should return line for Chouette::Line" do -      expect(Chouette::Line.table_name).to eq("lines") +      expect(Chouette::Line.table_name).to eq("public.lines")      end -     +      it "should return ptnetwork for Chouette::Network" do        expect(Chouette::Network.table_name).to eq("networks")      end @@ -25,7 +25,7 @@ describe Chouette::ActiveRecord, :type => :model do    end    describe "method_missing" do -     +      it "should support method with additionnal underscores" do        stop_area = Chouette::StopArea.new        expect(stop_area.area_type).to eq(stop_area.area_type) @@ -35,7 +35,7 @@ describe Chouette::ActiveRecord, :type => :model do    describe "respond_to?" do -     +      it "should respond to method with additionnal underscores" do        stop_area = Chouette::StopArea.new        expect(stop_area.respond_to?(:area_type)).to be_truthy @@ -49,7 +49,7 @@ describe Chouette::ActiveRecord, :type => :model do  #     let(:name) { :lines }  #     let(:options) { {} }  #     let(:active_record) { Chouette::Network } -     +  #     let(:modified_options) { {:modified => true}  }  #     it "should invoke create_reflection_without_chouette_naming with modified options" do @@ -87,7 +87,7 @@ end  #   end  #   describe "class_name" do -     +  #     it "should be Chouette::Line when name is line" do  #       allow(subject).to receive_messages :name => "line"  #       expect(subject.class_name).to eq("Chouette::Line") @@ -102,7 +102,7 @@ end  #   describe "options" do -     +  #     it "should define class_name if not" do  #       allow(subject).to receive_messages :options => {}, :class_name => "class_name"  #       expect(subject.options_with_default[:class_name]).to eq("class_name") @@ -114,7 +114,7 @@ end  #     end  #   end -   +  # end diff --git a/spec/models/chouette/group_of_line_spec.rb b/spec/models/chouette/group_of_line_spec.rb index 66932cfd6..d49329118 100644 --- a/spec/models/chouette/group_of_line_spec.rb +++ b/spec/models/chouette/group_of_line_spec.rb @@ -16,7 +16,7 @@ describe Chouette::GroupOfLine, :type => :model do        expect(subject.stop_areas.count).to eq(route.stop_points.count)      end    end -   +    context "#line_tokens=" do      let!(:line1){create(:line)}      let!(:line2){create(:line)} | 
