timgremore commited on
Commit
18980e4
1 Parent(s): 572e5c5

feat: Associate code feedback with user and vector

Browse files
lib/medical_transcription/accounts/user.ex CHANGED
@@ -17,6 +17,7 @@ defmodule MedicalTranscription.Accounts.User do
17
  field :confirmed_at, :naive_datetime
18
 
19
  has_many :transcriptions, MedicalTranscription.Transcriptions.Transcription
 
20
 
21
  timestamps(type: :utc_datetime)
22
  end
 
17
  field :confirmed_at, :naive_datetime
18
 
19
  has_many :transcriptions, MedicalTranscription.Transcriptions.Transcription
20
+ has_many :code_feedbacks, MedicalTranscription.Feedback.CodeFeedback
21
 
22
  timestamps(type: :utc_datetime)
23
  end
lib/medical_transcription/feedback/code_feedback.ex CHANGED
@@ -7,18 +7,25 @@ defmodule MedicalTranscription.Feedback.CodeFeedback do
7
  @primary_key {:id, :binary_id, autogenerate: true}
8
  @foreign_key_type :binary_id
9
  schema "code_feedbacks" do
10
- field :text, :string
11
- field :text_vector, Pgvector.Ecto.Vector
12
- field :response, :boolean
13
 
14
- belongs_to :code_vector, MedicalTranscription.CodeVector
 
15
 
16
  timestamps(type: :utc_datetime)
17
  end
18
 
19
  def changeset(code_feedback, params \\ %{}) do
20
  code_feedback
21
- |> Ecto.Changeset.cast(params, [:text, :text_vector, :response, :code_vector_id])
22
- |> Ecto.Changeset.validate_required([:text, :text_vector, :response, :code_vector_id])
 
 
 
 
 
 
23
  end
24
  end
 
7
  @primary_key {:id, :binary_id, autogenerate: true}
8
  @foreign_key_type :binary_id
9
  schema "code_feedbacks" do
10
+ field(:text, :string)
11
+ field(:text_vector, Pgvector.Ecto.Vector)
12
+ field(:response, :boolean)
13
 
14
+ belongs_to(:code_vector, MedicalTranscription.CodeVector)
15
+ belongs_to(:user, MedicalTranscription.Accounts.User)
16
 
17
  timestamps(type: :utc_datetime)
18
  end
19
 
20
  def changeset(code_feedback, params \\ %{}) do
21
  code_feedback
22
+ |> Ecto.Changeset.cast(params, [:text, :text_vector, :response, :code_vector_id, :user_id])
23
+ |> Ecto.Changeset.validate_required([
24
+ :text,
25
+ :text_vector,
26
+ :response,
27
+ :code_vector_id,
28
+ :user_id
29
+ ])
30
  end
31
  end
lib/medical_transcription/transcriptions/transcription_chunk.ex CHANGED
@@ -17,6 +17,7 @@ defmodule MedicalTranscription.Transcriptions.TranscriptionChunk do
17
  MedicalTranscription.Transcriptions.TranscriptionChunkCodeVector
18
 
19
  has_many :code_vectors, through: [:transcription_chunk_code_vectors, :code_vector]
 
20
 
21
  timestamps(type: :utc_datetime)
22
  end
 
17
  MedicalTranscription.Transcriptions.TranscriptionChunkCodeVector
18
 
19
  has_many :code_vectors, through: [:transcription_chunk_code_vectors, :code_vector]
20
+ has_many :code_feedbacks, MedicalTranscription.Feedback.CodeFeedback
21
 
22
  timestamps(type: :utc_datetime)
23
  end
priv/repo/migrations/20240220230041_add_user_id_to_code_feedbacks.exs ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ defmodule MedicalTranscription.Repo.Migrations.AddUserIdToCodeFeedbacks do
2
+ use Ecto.Migration
3
+
4
+ def change do
5
+ alter table("code_feedbacks") do
6
+ # TODO: This doesn't need to be nullable
7
+ add(
8
+ :user_id,
9
+ references(:users, type: :binary_id, on_delete: :nilify_all),
10
+ null: true
11
+ )
12
+ end
13
+ end
14
+ end
priv/repo/migrations/20240220230435_add_transcription_chunk_id_to_code_feedbacks.exs ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ defmodule MedicalTranscription.Repo.Migrations.AddTranscriptionChunkIdToCodeFeedbacks do
2
+ use Ecto.Migration
3
+
4
+ def change do
5
+ alter table(:code_feedbacks) do
6
+ # TODO: This shouldn't be nullable
7
+ add(
8
+ :transcription_chunk_id,
9
+ references(:users, type: :binary_id, on_delete: :delete_all),
10
+ null: true
11
+ )
12
+ end
13
+ end
14
+ end
priv/repo/migrations/20240220230712_add_unique_constraint_to_code_feedbacks_for_user_and_transcription_chunk.exs ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ defmodule MedicalTranscription.Repo.Migrations.AddUniqueConstraintToCodeFeedbacksForUserAndTranscriptionChunk do
2
+ use Ecto.Migration
3
+
4
+ def change do
5
+ create(
6
+ unique_index(
7
+ :code_feedbacks,
8
+ [:transcription_chunk_id, :user_id],
9
+ name: :index_for_transcription_chunk_user_id_uniqueness
10
+ )
11
+ )
12
+ end
13
+ end