feat: seed member user relations
This commit is contained in:
parent
e2bbe1fb40
commit
84abe0a4b5
1 changed files with 83 additions and 0 deletions
|
|
@ -92,3 +92,86 @@ for member_attrs <- [
|
||||||
] do
|
] do
|
||||||
Membership.create_member!(member_attrs)
|
Membership.create_member!(member_attrs)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Create additional users for user-member linking examples
|
||||||
|
additional_users = [
|
||||||
|
%{email: "hans.mueller@example.de"},
|
||||||
|
%{email: "greta.schmidt@example.de"},
|
||||||
|
%{email: "maria.weber@example.de"},
|
||||||
|
%{email: "thomas.klein@example.de"}
|
||||||
|
]
|
||||||
|
|
||||||
|
created_users =
|
||||||
|
Enum.map(additional_users, fn user_attrs ->
|
||||||
|
Accounts.create_user!(user_attrs, upsert?: true, upsert_identity: :unique_email)
|
||||||
|
|> Ash.Changeset.for_update(:admin_set_password, %{password: "testpassword"})
|
||||||
|
|> Ash.update!()
|
||||||
|
end)
|
||||||
|
|
||||||
|
# Create members with linked users to demonstrate the 1:1 relationship
|
||||||
|
# Only create if users don't already have members
|
||||||
|
linked_members = [
|
||||||
|
%{
|
||||||
|
first_name: "Maria",
|
||||||
|
last_name: "Weber",
|
||||||
|
email: "maria.weber@example.de",
|
||||||
|
birth_date: ~D[1992-07-14],
|
||||||
|
join_date: ~D[2023-03-15],
|
||||||
|
paid: true,
|
||||||
|
phone_number: "+49301357924",
|
||||||
|
city: "Frankfurt",
|
||||||
|
street: "Goetheplatz",
|
||||||
|
house_number: "5",
|
||||||
|
postal_code: "60313",
|
||||||
|
notes: "Linked to user account",
|
||||||
|
# Link to the third user (maria.weber@example.de)
|
||||||
|
user: Enum.at(created_users, 2)
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
first_name: "Thomas",
|
||||||
|
last_name: "Klein",
|
||||||
|
email: "thomas.klein@example.de",
|
||||||
|
birth_date: ~D[1988-12-03],
|
||||||
|
join_date: ~D[2023-04-01],
|
||||||
|
paid: false,
|
||||||
|
phone_number: "+49302468135",
|
||||||
|
city: "Köln",
|
||||||
|
street: "Rheinstraße",
|
||||||
|
house_number: "23",
|
||||||
|
postal_code: "50667",
|
||||||
|
notes: "Linked to user account - needs payment follow-up",
|
||||||
|
# Link to the fourth user (thomas.klein@example.de)
|
||||||
|
user: Enum.at(created_users, 3)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Create the linked members only if the users don't already have members
|
||||||
|
Enum.each(linked_members, fn member_attrs ->
|
||||||
|
user = member_attrs.user
|
||||||
|
member_attrs_without_user = Map.delete(member_attrs, :user)
|
||||||
|
|
||||||
|
# Check if user already has a member
|
||||||
|
if user.member_id == nil do
|
||||||
|
# User is free, create member and link
|
||||||
|
Membership.create_member!(Map.put(member_attrs_without_user, :user, %{id: user.id}))
|
||||||
|
else
|
||||||
|
# User already has a member, just create the member without linking
|
||||||
|
Membership.create_member!(member_attrs_without_user)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
IO.puts("✅ Seeds completed successfully!")
|
||||||
|
IO.puts("📝 Created sample data:")
|
||||||
|
IO.puts(" - Property types: String, Date, Boolean, Email")
|
||||||
|
IO.puts(" - Admin user: admin@mv.local (password: testpassword)")
|
||||||
|
IO.puts(" - Sample members: Hans, Greta, Friedrich")
|
||||||
|
|
||||||
|
IO.puts(
|
||||||
|
" - Additional users: hans.mueller@example.de, greta.schmidt@example.de, maria.weber@example.de, thomas.klein@example.de"
|
||||||
|
)
|
||||||
|
|
||||||
|
IO.puts(
|
||||||
|
" - Linked members: Maria Weber ↔ maria.weber@example.de, Thomas Klein ↔ thomas.klein@example.de"
|
||||||
|
)
|
||||||
|
|
||||||
|
IO.puts("🔗 Visit the application to see user-member relationships in action!")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue