defmodule DidoData.Models.UserDetails do
use Ecto.Schema
import Ecto.Changeset
@primary_key { :user_details_id, :binary_id, autogenerate: true }
@foreign_key_type :binary_id
@derive
{ Jason.Encoder, only:
[ :change_notes,
:public_signature_key,
:user_name,
:web_site
]
}
schema "user_details" do
field :change_notes, :string
field :public_signature_key, :boolean
field :user_name, :string
field :web_site, :string
has_many :domain_board_member, DidoData.Models.DomainBoardMember, foreign_key: :User_Details_Id, references: :user_details_id
has_many :domain_chair, DidoData.Models.DomainChair, foreign_key: :User_Details_Id, references: :user_details_id
has_many :domain_member, DidoData.Models.DomainMember, foreign_key: :User_Details_Id, references: :user_details_id
has_many :ecocsys_board_member, DidoData.Models.EcocsysBoardMember, foreign_key: :User_Details_Id, references: :user_details_id
has_many :ecosphere_board_member, DidoData.Models.EcosphereBoardMember, foreign_key: :User_Details_Id, references: :user_details_id
has_many :ecosphere_chair, DidoData.Models.EcosphereChair, foreign_key: :User_Details_Id, references: :user_details_id
has_many :ecosphere_member, DidoData.Models.EcosphereMember, foreign_key: :User_Details_Id, references: :user_details_id
has_many :ecosphere_sponsor, DidoData.Models.EcosphereSponsor, foreign_key: :User_Details_Id, references: :user_details_id
has_many :ecosys_chair, DidoData.Models.EcosysChair, foreign_key: :User_Details_Id, references: :user_details_id
has_many :ecosys_member, DidoData.Models.EcosysMember, foreign_key: :User_Details_Id, references: :user_details_id
has_many :social_network_connection, DidoData.Models.SocialNetworkConnection, foreign_key: :User_Details_Id, references: :user_details_id
has_one :virtual_contact_card, DidoData.Models.VirtualContactCard, foreign_key: :User_Details_Id, references: :user_details_id
has_many :user_profile, DidoData.Models.UserProfile, foreign_key: :User_Details_Id, references: :user_details_id
has_many :user_role, DidoData.Models.UserRole, foreign_key: :User_Details_Id, references: :user_details_id
timestamps() #- updates fields updated_at and inserted_at
end
@doc false
def changeset(user_details, attrs) do
user_details
|> cast(attrs,
[ :user_name,
]
)
|> foreign_key_constraint(:domain_board_member)
|> cast_assoc(:domain_board_member, required: false )
# DomainBoardMember.creation_changeset/2
|> foreign_key_constraint(:domain_chair)
|> cast_assoc(:domain_chair, required: false )
# DomainChair.creation_changeset/2
|> foreign_key_constraint(:domain_member)
|> cast_assoc(:domain_member, required: false )
# DomainMember.creation_changeset/2
|> foreign_key_constraint(:ecocsys_board_member)
|> cast_assoc(:ecocsys_board_member, required: false )
# EcocsysBoardMember.creation_changeset/2
|> foreign_key_constraint(:ecosphere_board_member)
|> cast_assoc(:ecosphere_board_member, required: false )
# EcosphereBoardMember.creation_changeset/2
|> foreign_key_constraint(:ecosphere_chair)
|> cast_assoc(:ecosphere_chair, required: false )
# EcosphereChair.creation_changeset/2
|> foreign_key_constraint(:ecosphere_member)
|> cast_assoc(:ecosphere_member, required: false )
# EcosphereMember.creation_changeset/2
|> foreign_key_constraint(:ecosphere_sponsor)
|> cast_assoc(:ecosphere_sponsor, required: false )
# EcosphereSponsor.creation_changeset/2
|> foreign_key_constraint(:ecosys_chair)
|> cast_assoc(:ecosys_chair, required: false )
# EcosysChair.creation_changeset/2
|> foreign_key_constraint(:ecosys_member)
|> cast_assoc(:ecosys_member, required: false )
# EcosysMember.creation_changeset/2
|> foreign_key_constraint(:social_network_connection)
|> cast_assoc(:social_network_connection, required: false )
# SocialNetworkConnection.creation_changeset/2
|> foreign_key_constraint(:virtual_contact_card)
|> cast_assoc(:virtual_contact_card, required: true )
# VirtualContactCard.creation_changeset/2
|> foreign_key_constraint(:user_profile)
|> cast_assoc(:user_profile, required: true )
# UserProfile.creation_changeset/2
|> foreign_key_constraint(:user_role)
|> cast_assoc(:user_role, required: true )
# UserRole.creation_changeset/2
end
def fetch(user_details, key) when is_map(user_details) do
case user_details do
%{^key => value} -> {:ok, value}
_ -> :error
end
end
end```