52 lines
1.8 KiB
Go
52 lines
1.8 KiB
Go
package datastore
|
||
|
||
import (
|
||
"code.linberg.su/linberg/awesome-cli/awesome-back/internal/domain/entities"
|
||
"code.linberg.su/linberg/awesome-cli/awesome-back/internal/domain/repositories"
|
||
"code.linberg.su/linberg/awesome-cli/awesome-back/pkg/errors"
|
||
)
|
||
|
||
type MockPastryRepository struct {
|
||
pastries []entities.Pastry
|
||
}
|
||
|
||
func NewMockPastryRepository() repositories.PastryRepository {
|
||
return &MockPastryRepository{
|
||
pastries: []entities.Pastry{
|
||
{ID: 1, Name: "Круассан", Description: "Слоеная выпечка с маслом", Price: 80.0, Category: "Выпечка"},
|
||
{ID: 2, Name: "Тирамису", Description: "Итальянский десерт", Price: 150.0, Category: "Десерты"},
|
||
{ID: 3, Name: "Чизкейк", Description: "Сырный торт", Price: 130.0, Category: "Десерты"},
|
||
{ID: 4, Name: "Маффин", Description: "Шоколадный кекс", Price: 70.0, Category: "Выпечка"},
|
||
{ID: 5, Name: "Печенье", Description: "Домашнее овсяное печенье", Price: 50.0, Category: "Печенье"},
|
||
},
|
||
}
|
||
}
|
||
|
||
func (r *MockPastryRepository) FindAll() ([]entities.Pastry, error) {
|
||
return r.pastries, nil
|
||
}
|
||
|
||
func (r *MockPastryRepository) FindByID(id int) (*entities.Pastry, error) {
|
||
for _, pastry := range r.pastries {
|
||
if pastry.ID == id {
|
||
return &pastry, nil
|
||
}
|
||
}
|
||
return nil, errors.NewNotFoundError("pastry not found")
|
||
}
|
||
|
||
func (r *MockPastryRepository) FindByCategory(category string) ([]entities.Pastry, error) {
|
||
var filtered []entities.Pastry
|
||
for _, pastry := range r.pastries {
|
||
if pastry.Category == category {
|
||
filtered = append(filtered, pastry)
|
||
}
|
||
}
|
||
|
||
if len(filtered) == 0 {
|
||
return nil, errors.NewNotFoundError("no pastries found for category")
|
||
}
|
||
|
||
return filtered, nil
|
||
}
|