49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package repository
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"git.hrafn.xyz/aether/notes/internal/models"
|
|
)
|
|
|
|
type NoteRepository struct {
|
|
store NoteStore
|
|
}
|
|
|
|
func NewNoteRepository(store NoteStore) *NoteRepository {
|
|
return &NoteRepository{store: store}
|
|
}
|
|
|
|
func (r *NoteRepository) CreateNote(content string) (models.Note, error) {
|
|
if content == "" {
|
|
return models.Note{}, fmt.Errorf("content cannot be empty")
|
|
}
|
|
note := models.Note{
|
|
Content: content,
|
|
LastUpdate: time.Now(),
|
|
}
|
|
return r.store.SaveNote(note)
|
|
}
|
|
|
|
func (r *NoteRepository) GetNote(id int) (models.Note, error) {
|
|
return r.store.GetNoteByID(id)
|
|
}
|
|
|
|
func (r *NoteRepository) ListNotes() ([]models.Note, error) {
|
|
return r.store.GetAllNotes()
|
|
}
|
|
|
|
func (r *NoteRepository) UpdateNote(id int, content string) (models.Note, error) {
|
|
if content == "" {
|
|
return models.Note{}, fmt.Errorf("content cannot be empty")
|
|
}
|
|
note, err := r.store.GetNoteByID(id)
|
|
if err != nil {
|
|
return models.Note{}, err
|
|
}
|
|
note.Content = content
|
|
note.LastUpdate = time.Now()
|
|
return r.store.SaveNote(note)
|
|
}
|