package mock import ( "context" "fmt" "sync" "github.com/google/uuid" "git.kundeng.us/phoenix/textsender-models/pkg/message/scheduling" ) type ScheduledMessageKey struct { UserId uuid.UUID } type MockScheduledMessageStore struct { ScheduledMessages map[uuid.UUID]*scheduling.ScheduledMessage ScheduledMessagesByKey map[ScheduledMessageKey]*scheduling.ScheduledMessage mu sync.RWMutex Error error // Optional: simulate errors } func NewMockScheduledMessageStore() *MockScheduledMessageStore { return &MockScheduledMessageStore{ ScheduledMessages: make(map[uuid.UUID]*scheduling.ScheduledMessage), ScheduledMessagesByKey: make(map[ScheduledMessageKey]*scheduling.ScheduledMessage), } } func (m *MockScheduledMessageStore) Get(ctx context.Context, id uuid.UUID) (*scheduling.ScheduledMessage, error) { m.mu.Lock() defer m.mu.Unlock() if m.Error != nil { return nil, m.Error } if id == uuid.Nil { return nil, fmt.Errorf("Id is nil") } else { if schMsg := m.ScheduledMessages[id]; schMsg != nil { return schMsg, nil } else { return nil, fmt.Errorf("Scheduled message does not exist") } } } func (m *MockScheduledMessageStore) CreateScheduledMessage(ctx context.Context, schedMsg *scheduling.ScheduledMessage) error { m.mu.Lock() defer m.mu.Unlock() if m.Error != nil { return m.Error } if schedMsg.Id == uuid.Nil { schedMsg.Id = uuid.New() } key := ScheduledMessageKey{UserId: schedMsg.UserId} m.ScheduledMessages[schedMsg.Id] = schedMsg m.ScheduledMessagesByKey[key] = schedMsg return nil }