Skip to content

Commit 681817c

Browse files
committed
remove unique indexes on tokens
1 parent 2841568 commit 681817c

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

lib/algora/interviews/schemas/job_interview.ex

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ defmodule Algora.Interviews.JobInterview do
44

55
import Ecto.Changeset
66

7+
alias Algora.Accounts.User
8+
79
@interview_statuses [:initial, :ongoing, :passed, :failed, :withdrawn]
810

911
typed_schema "job_interviews" do
@@ -17,33 +19,43 @@ defmodule Algora.Interviews.JobInterview do
1719
field :company_feedback_token, :string
1820
field :candidate_feedback_token, :string
1921

20-
belongs_to :user, Algora.Accounts.User
22+
belongs_to :user, User
2123
belongs_to :job_posting, Algora.Jobs.JobPosting
22-
belongs_to :org, Algora.Accounts.User
24+
belongs_to :org, User
2325

2426
timestamps()
2527
end
2628

2729
def changeset(job_interview, attrs) do
2830
job_interview
29-
|> cast(attrs, [:user_id, :job_posting_id, :org_id, :status, :notes, :scheduled_at, :completed_at, :company_feedback, :candidate_feedback, :company_feedback_token, :candidate_feedback_token])
31+
|> cast(attrs, [
32+
:user_id,
33+
:job_posting_id,
34+
:org_id,
35+
:status,
36+
:notes,
37+
:scheduled_at,
38+
:completed_at,
39+
:company_feedback,
40+
:candidate_feedback,
41+
:company_feedback_token,
42+
:candidate_feedback_token
43+
])
3044
|> validate_required([:user_id, :job_posting_id, :org_id, :status])
3145
|> validate_inclusion(:status, @interview_statuses)
3246
|> foreign_key_constraint(:user_id)
3347
|> foreign_key_constraint(:job_posting_id)
3448
|> foreign_key_constraint(:org_id)
3549
|> unique_constraint([:user_id, :org_id])
36-
|> unique_constraint(:company_feedback_token)
37-
|> unique_constraint(:candidate_feedback_token)
3850
|> generate_id()
3951
|> maybe_generate_feedback_tokens()
4052
end
4153

4254
defp maybe_generate_feedback_tokens(changeset) do
4355
if get_field(changeset, :id) && !get_field(changeset, :company_feedback_token) do
4456
changeset
45-
|> put_change(:company_feedback_token, Nanoid.generate(8))
46-
|> put_change(:candidate_feedback_token, Nanoid.generate(8))
57+
|> put_change(:company_feedback_token, Nanoid.generate(6))
58+
|> put_change(:candidate_feedback_token, Nanoid.generate(6))
4759
else
4860
changeset
4961
end
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defmodule Algora.Repo.Migrations.RemoveFeedbackTokenUniqueIndexes do
2+
use Ecto.Migration
3+
4+
def change do
5+
drop_if_exists unique_index(:job_interviews, [:company_feedback_token])
6+
drop_if_exists unique_index(:job_interviews, [:candidate_feedback_token])
7+
end
8+
end

0 commit comments

Comments
 (0)