feat: sqlite storage draft
This commit is contained in:
@ -5,8 +5,8 @@ import (
|
||||
|
||||
"donniemarko/internal/note"
|
||||
"donniemarko/internal/storage"
|
||||
"os"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
type NotesHandler struct {
|
||||
@ -55,6 +55,7 @@ func ParseNoteFile(path string) (*note.Note, error) {
|
||||
id := note.GenerateNoteID(path)
|
||||
nn := note.NewNote()
|
||||
nn.ID = id
|
||||
nn.Path = path
|
||||
nn.Content = string(content)
|
||||
nn.Title = note.ExtractTitle(nn.Content)
|
||||
// Use filename as title if no heading found
|
||||
@ -62,6 +63,6 @@ func ParseNoteFile(path string) (*note.Note, error) {
|
||||
nn.Title = filepath.Base(path)
|
||||
}
|
||||
nn.UpdatedAt = fileInfo.ModTime()
|
||||
nn.CreatedAt = fileInfo.ModTime()
|
||||
nn.Size = fileInfo.Size()
|
||||
return nn, nil
|
||||
}
|
||||
|
||||
@ -98,6 +98,31 @@ func (s *ScannerService) Monitor(ctx context.Context) error {
|
||||
ticker := time.NewTicker(s.Interval)
|
||||
defer ticker.Stop()
|
||||
|
||||
applyChanges := func(changes []Change) {
|
||||
for _, change := range changes {
|
||||
var err error
|
||||
switch change.Type {
|
||||
case Created:
|
||||
err = s.handler.HandleCreate(change.Path)
|
||||
case Modified:
|
||||
err = s.handler.HandleModify(change.Path)
|
||||
case Deleted:
|
||||
err = s.handler.HandleDelete(change.Path)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Printf("handler error for %s: %v", change.Path, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
changes, err := s.Scan()
|
||||
if err != nil {
|
||||
log.Printf("scan error: %v", err)
|
||||
} else {
|
||||
applyChanges(changes)
|
||||
}
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
@ -107,21 +132,7 @@ func (s *ScannerService) Monitor(ctx context.Context) error {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, change := range changes {
|
||||
var err error
|
||||
switch change.Type {
|
||||
case Created:
|
||||
err = s.handler.HandleCreate(change.Path)
|
||||
case Modified:
|
||||
err = s.handler.HandleModify(change.Path)
|
||||
case Deleted:
|
||||
err = s.handler.HandleDelete(change.Path)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Printf("handler error for %s: %v", change.Path, err)
|
||||
}
|
||||
}
|
||||
applyChanges(changes)
|
||||
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
|
||||
Reference in New Issue
Block a user