From 3c01f6a75958ae28710122bebaddb7e5d1a37c73 Mon Sep 17 00:00:00 2001 From: Kaio Magalhaes Date: Tue, 12 Mar 2024 17:12:04 -0300 Subject: [PATCH] make project name unique --- app/models/project.rb | 3 ++- bin/pull_prod_backup.sh | 1 + db/migrate/20240312200929_add_name_contraint_to_project.rb | 7 +++++++ db/schema.rb | 3 ++- spec/factories/projects.rb | 1 + spec/models/project_spec.rb | 1 + 6 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20240312200929_add_name_contraint_to_project.rb diff --git a/app/models/project.rb b/app/models/project.rb index 4b51aa6..1485dab 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -21,6 +21,7 @@ # Indexes # # index_projects_on_customer_id (customer_id) +# index_projects_on_name (name) UNIQUE # index_projects_on_slug (slug) UNIQUE # # Foreign Keys @@ -35,7 +36,7 @@ class Project < ApplicationRecord has_many :issues, dependent: :destroy has_many :statement_of_works, dependent: :destroy - validates :name, presence: true + validates :name, presence: true, uniqueness: { case_sensitive: false } validates :billable, inclusion: { in: [true, false] } validates :slack_channel, presence: true diff --git a/bin/pull_prod_backup.sh b/bin/pull_prod_backup.sh index 4604f68..882cba4 100644 --- a/bin/pull_prod_backup.sh +++ b/bin/pull_prod_backup.sh @@ -7,4 +7,5 @@ docker exec -it backstage-db psql -U postgres -c 'DROP DATABASE IF EXISTS backst docker exec -it backstage-db psql -U postgres -c "CREATE DATABASE backstage_development" docker exec -it backstage-db psql -U postgres backstage_development -c "CREATE SCHEMA IF NOT EXISTS heroku_ext AUTHORIZATION postgres" docker exec -it backstage-db pg_restore --no-owner -U postgres -d backstage_development -1 ./app/latest.dump +docker exec -it backstage-api rails db:create sh bin/dev \ No newline at end of file diff --git a/db/migrate/20240312200929_add_name_contraint_to_project.rb b/db/migrate/20240312200929_add_name_contraint_to_project.rb new file mode 100644 index 0000000..435def7 --- /dev/null +++ b/db/migrate/20240312200929_add_name_contraint_to_project.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddNameContraintToProject < ActiveRecord::Migration[7.0] + def change + add_index :projects, :name, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 96e93a2..9f7b97f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_03_12_175232) do +ActiveRecord::Schema[7.0].define(version: 2024_03_12_200929) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -127,6 +127,7 @@ t.boolean "sync_source_control", default: false, null: false t.string "logo_background_color" t.index ["customer_id"], name: "index_projects_on_customer_id" + t.index ["name"], name: "index_projects_on_name", unique: true t.index ["slug"], name: "index_projects_on_slug", unique: true end diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index 567a173..d634bde 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -21,6 +21,7 @@ # Indexes # # index_projects_on_customer_id (customer_id) +# index_projects_on_name (name) UNIQUE # index_projects_on_slug (slug) UNIQUE # # Foreign Keys diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 967e267..094c3e9 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -21,6 +21,7 @@ # Indexes # # index_projects_on_customer_id (customer_id) +# index_projects_on_name (name) UNIQUE # index_projects_on_slug (slug) UNIQUE # # Foreign Keys