49 lines
956 B
Go
49 lines
956 B
Go
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{}
|
|
}
|