package repositories import ( "context" "errors" "git.kocoder.xyz/kocoded/vt/fx/interfaces/stores" ) type InMemoryMessageRepository struct { m map[int]*stores.Message } func (i *InMemoryMessageRepository) AddMessage(_ context.Context, m *stores.Message) error { i.m[m.Id] = m return nil } func (i *InMemoryMessageRepository) GetMessage(ctx context.Context, id int) (*stores.Message, error) { m, ok := i.m[id] if !ok { return nil, errors.New("Message not found") } return m, nil } func (i *InMemoryMessageRepository) ListMessages(ctx context.Context) ([]*stores.Message, error) { messages := make([]*stores.Message, 0, len(i.m)) for _, v := range i.m { messages = append(messages, v) } return messages, nil } func (i *InMemoryMessageRepository) RemoveMessage(ctx context.Context, id int) error { delete(i.m, id) return nil } func NewInMemeoryMessageRepository() stores.MessageStore { return &InMemoryMessageRepository{} }