package scanner import ( "path/filepath" "donniemarko/internal/note" "donniemarko/internal/storage" "os" // "log" ) type NotesHandler struct { storage storage.Storage } func NewNotesHandler(storage storage.Storage) *NotesHandler { return &NotesHandler{storage: storage} } func (h *NotesHandler) HandleCreate(path string) error { note, err := ParseNoteFile(path) if err != nil { return err } h.storage.Create(note) return nil } func (h *NotesHandler) HandleModify(path string) error { return h.HandleCreate(path) } func (h *NotesHandler) HandleDelete(path string) error { id := note.GenerateNoteID(path) h.storage.Delete(id) return nil } func ParseNoteFile(path string) (*note.Note, error) { content, err := os.ReadFile(path) if err != nil { return nil, err } // Get file info to get modification time fileInfo, err := os.Stat(path) if err != nil { return nil, err } id := note.GenerateNoteID(path) nn := note.NewNote() nn.ID = id nn.Content = string(content) nn.Title = note.ExtractTitle(nn.Content) if nn.Title == "" { // Use filename as title if no heading found nn.Title = filepath.Base(path) } nn.UpdatedAt = fileInfo.ModTime() nn.CreatedAt = fileInfo.ModTime() return nn, nil }