Hi, I have a legacy mysql database:
CREATE TABLE `joboffers` (
`idJobOffers` int(11) NOT NULL AUTO_INCREMENT,
…
PRIMARY KEY (`idJobOffers`),
) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
so I mapped it:
defmodule RagingBull.Models.Requirement do
use Ecto.Schema
import Ecto.Changeset
alias RagingBull.Models.Planning
alias RagingBull.Models.Contract
alias RagingBull.Models.SecondmentProposal
@primary_key {:id, :integer, [source: :idJobOffers, autogenerate: false]}
schema "joboffers" do
...
field :status, :boolean
has_many :plannings, Planning, foreign_key: :requirement_id
has_many :contracts, Contract, foreign_key: :requirement_id
has_many :secondment_proposals, SecondmentProposal, foreign_key: :requirement_id
end
def changeset(requirement, attrs \\ %{}) do
requirement
|> cast(attrs, [:id, :establishment_id, :subjob_id, :justification_id, :status])
|> cast_assoc(:plannings, with: &Planning.changeset/2)
|> cast_assoc(:contracts, with: &Contract.changeset/2)
|> cast_assoc(:secondment_proposals, with: &SecondmentProposal.changeset/2)
|> validate_required([:establishment_id, :subjob_id, :justification_id])
end
end
When it gets inserted, it never retrieves the id which is a major issue when trying to save an entire tree of things starting from the requitement (with contracts, plannings, secondment proposals which also have secondment_proposal_availabilities ).
Am I doing something wrong in the mapping?