Add groups resource close #371 #378
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
high priority
invalid
L
low priority
M
medium priority
needs refinement
optional
question
S
UX research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: local-it/mitgliederverwaltung#378
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/371-groups-resource"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description of the implemented changes
The changes were:
What has been changed?
New Resources
Group Resource (
lib/membership/group.ex)name,description,slugname(immutable after creation)name(LOWER(name) in DB)slugmember_count(number of members in the group)has_many :member_groups,many_to_many :membersMemberGroup Resource (
lib/membership/member_group.ex)(member_id, group_id)prevents duplicatesExtended Resources
Member Resource (
lib/membership/member.ex)has_many :member_groupsmany_to_many :groupsMembership Domain (
lib/membership/membership.ex)create_group/1,list_groups/0,update_group/2,destroy_group/1create_member_group/1,list_member_groups/0,destroy_member_group/1Refactoring
lib/membership/changes/generate_slug.ex)Mv.Membership.Changes.GenerateSluglib/membership/custom_field/changes/generate_slug.exlib/membership/group/changes/generate_slug.exDatabase Migrations
20260127141620_add_groups_and_member_groups.exsgroupstable with UUID v7 primary keyLOWER(name)for case-insensitive uniquenessslugfor case-sensitive uniquenessmember_groupsjoin table with CASCADE deletemember_idandgroup_idTests
test/membership/group_test.exs(27 tests)test/membership/group_database_constraints_test.exs(3 tests)test/membership/group_integration_test.exs(2 tests)test/membership/member_group_test.exs(3 tests)test/membership/member_groups_relationship_test.exs(3 tests)Documentation
docs/groups-architecture.mdwith correct reference to generalized slug generationDefinition of Done
Code Quality
Accessibility
Testing
Additional Notes
Implementation Details
member_groupshave CASCADE delete, so associations are automatically removed when a member or group is deletedPerformance
member_idandgroup_idfor efficient queries(member_id, group_id)for fast duplicate checkingNext Steps (not in this PR)
Breaking Changes
Migration
mix ash.setupormix ecto.migrateWIP: Add groups resource close #371to Add groups resource close #371