-
Notifications
You must be signed in to change notification settings - Fork 0
Add organization model and memberships to core service #214
Copy link
Copy link
Closed
Labels
complexity:largeLarge scope: 200+ lines, multiple filesLarge scope: 200+ lines, multiple filesenhancementNew feature or requestNew feature or requestneeds-testsArea needs dedicated test coverageArea needs dedicated test coveragetriagedIssue has been triaged, ready for planning or implementationIssue has been triaged, ready for planning or implementation
Metadata
Metadata
Assignees
Labels
complexity:largeLarge scope: 200+ lines, multiple filesLarge scope: 200+ lines, multiple filesenhancementNew feature or requestNew feature or requestneeds-testsArea needs dedicated test coverageArea needs dedicated test coveragetriagedIssue has been triaged, ready for planning or implementationIssue has been triaged, ready for planning or implementation
Context
The core service (#211) requires organization support with a many-to-many relationship to users through a memberships table. This builds on the user model (#213).
Acceptance Criteria
Organizationmodel struct with fields:id(UUID, primary key)name(TEXT, unique, not null)created_at(TEXT/datetime)updated_at(TEXT/datetime)Membershipmodel struct with fields:id(UUID, primary key)user_id(UUID, foreign key to users)organization_id(UUID, foreign key to organizations)role(TEXT, e.g. "owner", "member")created_at(TEXT/datetime)OrganizationStoragewith CRUD operationsMembershipStoragewith operations:add_member(org_id, user_id, role)remove_member(org_id, user_id)list_members(org_id)— returns users in an organizationlist_user_organizations(user_id)— returns organizations a user belongs toget_membership(org_id, user_id)— check membership/role(user_id, organization_id)in membershipsRelevant Files
crates/orchestrator/src/storage.rs— reference for storage patternscrates/core/src/models/organization.rs,crates/core/src/storage/organizations.rs,crates/core/src/storage/memberships.rsDependencies