58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package repository_test
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.hrafn.xyz/aether/notes/internal/models"
|
|
)
|
|
|
|
type mockNoteStore struct {
|
|
Notes []models.Note
|
|
}
|
|
|
|
func (m *mockNoteStore) SaveNote(note models.Note) (models.Note, error) {
|
|
// Save a note
|
|
if note.ID == 0 {
|
|
note.ID = len(m.Notes) + 1
|
|
m.Notes = append(m.Notes, note)
|
|
return note, nil
|
|
}
|
|
// Update a note
|
|
_, index, err := m.getNoteAndIndexByID(note.ID)
|
|
if err != nil {
|
|
return models.Note{}, err
|
|
}
|
|
m.Notes[index] = note
|
|
return note, nil
|
|
}
|
|
|
|
func (m *mockNoteStore) GetNoteByID(id int) (models.Note, error) {
|
|
note, _, err := m.getNoteAndIndexByID(id)
|
|
if err != nil {
|
|
return models.Note{}, err
|
|
}
|
|
return note, nil
|
|
}
|
|
|
|
func (m *mockNoteStore) getNoteAndIndexByID(id int) (models.Note, int, error) {
|
|
for i, note := range m.Notes {
|
|
if note.ID == id {
|
|
return note, i, nil
|
|
}
|
|
}
|
|
return models.Note{}, -1, fmt.Errorf("note with ID %d not found", id)
|
|
}
|
|
|
|
func (m *mockNoteStore) GetAllNotes() ([]models.Note, error) {
|
|
return m.Notes, nil
|
|
}
|
|
|
|
func (m *mockNoteStore) DeleteNoteByID(id int) error {
|
|
_, index, err := m.getNoteAndIndexByID(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
m.Notes = append(m.Notes[:index], m.Notes[index+1:]...)
|
|
return nil
|
|
}
|