|
| 1 | +Sequel.migration do |
| 2 | + up do |
| 3 | + # Latest pact_publication (revision) for each provider/consumer version. |
| 4 | + # Keeping track of this in a table rather than having to calculate the |
| 5 | + # latest revision speeds things up. |
| 6 | + # We don't have to worry about updating it if a revision is deleted, because |
| 7 | + # you can't delete a single pact revision through the API - all the revisions |
| 8 | + # for a pact are deleted together when you delete the pact resource for that |
| 9 | + # consumer version, and when that happens, this row will cascade delete. |
| 10 | + create_table(:latest_pact_publication_ids_for_consumer_versions, charset: 'utf8') do |
| 11 | + foreign_key :consumer_id, :pacticipants, null: false, on_delete: :cascade # redundant, but speeds up queries by removing need for extra join |
| 12 | + foreign_key :consumer_version_id, :versions, null: false, on_delete: :cascade |
| 13 | + foreign_key :provider_id, :pacticipants, null: false, on_delete: :cascade |
| 14 | + foreign_key :pact_publication_id, :pact_publications, null: false, on_delete: :cascade, unique: true |
| 15 | + foreign_key :pact_version_id, :pact_versions, null: false, on_delete: :cascade |
| 16 | + index [:provider_id, :consumer_version_id], unique: true, name: "unq_latest_ppid_prov_conver" |
| 17 | + index [:provider_id, :consumer_id], name: "lpp_provider_id_consumer_id_index" |
| 18 | + end |
| 19 | + end |
| 20 | + |
| 21 | + down do |
| 22 | + drop_table(:latest_pact_publication_ids_for_consumer_versions) |
| 23 | + end |
| 24 | +end |
0 commit comments