Skip to content

Commit 8e575a5

Browse files
committed
add interview feedback fields
1 parent 260beff commit 8e575a5

File tree

3 files changed

+41
-1
lines changed

3 files changed

+41
-1
lines changed

lib/algora/interviews/schemas/job_interview.ex

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ defmodule Algora.Interviews.JobInterview do
1212
field :notes, :string
1313
field :scheduled_at, :utc_datetime_usec
1414
field :completed_at, :utc_datetime_usec
15+
field :company_feedback, :string
16+
field :candidate_feedback, :string
17+
field :company_feedback_token, :string
18+
field :candidate_feedback_token, :string
1519

1620
belongs_to :user, Algora.Accounts.User
1721
belongs_to :job_posting, Algora.Jobs.JobPosting
@@ -21,11 +25,24 @@ defmodule Algora.Interviews.JobInterview do
2125

2226
def changeset(job_interview, attrs) do
2327
job_interview
24-
|> cast(attrs, [:user_id, :job_posting_id, :status, :notes, :scheduled_at, :completed_at])
28+
|> cast(attrs, [:user_id, :job_posting_id, :status, :notes, :scheduled_at, :completed_at, :company_feedback, :candidate_feedback, :company_feedback_token, :candidate_feedback_token])
2529
|> validate_required([:user_id, :job_posting_id, :status])
2630
|> validate_inclusion(:status, @interview_statuses)
2731
|> foreign_key_constraint(:user_id)
2832
|> foreign_key_constraint(:job_posting_id)
33+
|> unique_constraint(:company_feedback_token)
34+
|> unique_constraint(:candidate_feedback_token)
2935
|> generate_id()
36+
|> maybe_generate_feedback_tokens()
37+
end
38+
39+
defp maybe_generate_feedback_tokens(changeset) do
40+
if get_field(changeset, :id) && !get_field(changeset, :company_feedback_token) do
41+
changeset
42+
|> put_change(:company_feedback_token, Nanoid.generate(8))
43+
|> put_change(:candidate_feedback_token, Nanoid.generate(8))
44+
else
45+
changeset
46+
end
3047
end
3148
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
defmodule Algora.Repo.Migrations.AddFeedbackToJobInterviews do
2+
use Ecto.Migration
3+
4+
def change do
5+
alter table(:job_interviews) do
6+
add :company_feedback, :text
7+
add :candidate_feedback, :text
8+
end
9+
end
10+
end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
defmodule Algora.Repo.Migrations.AddFeedbackTokensToJobInterviews do
2+
use Ecto.Migration
3+
4+
def change do
5+
alter table(:job_interviews) do
6+
add :company_feedback_token, :string
7+
add :candidate_feedback_token, :string
8+
end
9+
10+
create unique_index(:job_interviews, [:company_feedback_token])
11+
create unique_index(:job_interviews, [:candidate_feedback_token])
12+
end
13+
end

0 commit comments

Comments
 (0)