Compare commits
8 commits
899039b3ee
...
259d63b66e
| Author | SHA1 | Date | |
|---|---|---|---|
| 259d63b66e | |||
| 0af3ac7b69 | |||
| 3b8682bb52 | |||
| 7d570687c0 | |||
| 1fe4a9bb06 | |||
| 67cfcc5c41 | |||
| f390c5a965 | |||
| 7df34ce5ea |
1 changed files with 0 additions and 49 deletions
|
|
@ -1,49 +0,0 @@
|
||||||
## Core Rules
|
|
||||||
|
|
||||||
1. **User.email is source of truth** - Always overrides member email when linking
|
|
||||||
2. **DB constraints** - Prevent duplicates within same table (users.email, members.email)
|
|
||||||
3. **Custom validations** - Prevent cross-table conflicts only for linked entities
|
|
||||||
4. **Sync is bidirectional**: User ↔ Member (but User always wins on link)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Decision Tree
|
|
||||||
|
|
||||||
```
|
|
||||||
Action: Create/Update/Link Entity with Email X
|
|
||||||
│
|
|
||||||
├─ Does Email X violate DB constraint (same table)?
|
|
||||||
│ └─ YES → ❌ FAIL (two users or two members with same email)
|
|
||||||
│
|
|
||||||
├─ Is Entity currently linked? (or being linked?)
|
|
||||||
│ │
|
|
||||||
│ ├─ NO (unlinked entity)
|
|
||||||
│ │ └─ ✅ SUCCESS (no custom validation)
|
|
||||||
│ │
|
|
||||||
│ └─ YES (linked or linking)
|
|
||||||
│ │
|
|
||||||
│ ├─ Action: Update Linked User Email
|
|
||||||
│ │ ├─ Email used by other member? → ❌ FAIL (validation)
|
|
||||||
│ │ └─ Email unique? → ✅ SUCCESS + sync to member
|
|
||||||
│ │
|
|
||||||
│ ├─ Action: Update Linked Member Email
|
|
||||||
│ │ ├─ Email used by other user? → ❌ FAIL (validation)
|
|
||||||
│ │ └─ Email unique? → ✅ SUCCESS + sync to user
|
|
||||||
│ │
|
|
||||||
│ ├─ Action: Link User to Member (both directions)
|
|
||||||
│ │ ├─ User email used by other member? → ❌ FAIL (validation)
|
|
||||||
│ │ └─ Otherwise → ✅ SUCCESS + override member email
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sync Triggers
|
|
||||||
|
|
||||||
| Action | Sync Direction | When |
|
|
||||||
|--------|---------------|------|
|
|
||||||
| Update linked user email | User → Member | Email changed |
|
|
||||||
| Update linked member email | Member → User | Email changed |
|
|
||||||
| Link user to member | User → Member | Always (override) |
|
|
||||||
| Link member to user | User → Member | Always (override) |
|
|
||||||
| Unlink | None | Emails stay as-is |
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue