signup: waitlist_position — read model for queue position #3

Closed
opened 2026-02-28 08:39:57 +00:00 by ash · 0 comments
Owner

🟢 State-View Slice

Read Model: WaitlistPosition

type WaitlistEntry struct {
    Email       string
    Name        string
    Position    int       // queue position
    Status      string    // pending, approved, rejected, withdrawn
    SubmittedAt time.Time
}

Projection

Subscribes to: SignupSubmitted, SignupWithdrawn, SignupApproved, SignupRejected
Methods: GetByEmail(email) *WaitlistEntry, GetPosition(email) int

Tests

TestWaitlistPosition_Submitted → position assigned
TestWaitlistPosition_Withdrawn → status updated
TestWaitlistPosition_Approved → status updated, position removed
TestWaitlistPosition_Multiple → correct ordering

Agent assignment: builder-signup

## 🟢 State-View Slice **Read Model:** `WaitlistPosition` ```go type WaitlistEntry struct { Email string Name string Position int // queue position Status string // pending, approved, rejected, withdrawn SubmittedAt time.Time } ``` ### Projection Subscribes to: `SignupSubmitted`, `SignupWithdrawn`, `SignupApproved`, `SignupRejected` Methods: `GetByEmail(email) *WaitlistEntry`, `GetPosition(email) int` ### Tests ``` TestWaitlistPosition_Submitted → position assigned TestWaitlistPosition_Withdrawn → status updated TestWaitlistPosition_Approved → status updated, position removed TestWaitlistPosition_Multiple → correct ordering ``` **Agent assignment:** builder-signup
ash closed this issue 2026-02-28 08:50:35 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ash/waitlist#3
No description provided.