feat(vault/rebuild): added rebuild command / handler (#31)
* feat(vault/rebuild_index): add rebuild command * remove comments * rm unec using * remove unec command * build
This commit is contained in:
parent
c1feac0812
commit
2275d4bae4
4 changed files with 27 additions and 12 deletions
|
|
@ -32,6 +32,7 @@ func main() {
|
||||||
idxr := services.NewIndexRebuilder(uow, noteRepo, linkRepo, tagRepo, indexRepo )
|
idxr := services.NewIndexRebuilder(uow, noteRepo, linkRepo, tagRepo, indexRepo )
|
||||||
|
|
||||||
server.RegisterHandler("vault/init", vault.NewInitializeHandler(idxr, noteService))
|
server.RegisterHandler("vault/init", vault.NewInitializeHandler(idxr, noteService))
|
||||||
|
server.RegisterHandler("vault/rebuild", vault.NewRebuildIndexHandler(idxr))
|
||||||
server.RegisterHandler("note/create", note.NewCreateNoteHandler(uow, tagService, noteRepo))
|
server.RegisterHandler("note/create", note.NewCreateNoteHandler(uow, tagService, noteRepo))
|
||||||
server.RegisterHandler("note/save", note.NewSaveNoteHandler(uow, noteRepo, tagService, noteService, linkService))
|
server.RegisterHandler("note/save", note.NewSaveNoteHandler(uow, noteRepo, tagService, noteService, linkService))
|
||||||
server.RegisterHandler("note/goto", note.NewGotoNoteHandler(noteRepo))
|
server.RegisterHandler("note/goto", note.NewGotoNoteHandler(noteRepo))
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package note
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"log/slog"
|
|
||||||
|
|
||||||
filehandling "github.com/KristianJBorgwarth/dendrite.daemon/core/file_handling"
|
filehandling "github.com/KristianJBorgwarth/dendrite.daemon/core/file_handling"
|
||||||
"github.com/KristianJBorgwarth/dendrite.daemon/core/services"
|
"github.com/KristianJBorgwarth/dendrite.daemon/core/services"
|
||||||
|
|
@ -34,7 +33,6 @@ func NewSaveNoteHandler(
|
||||||
|
|
||||||
func (h *SaveNoteHandler) Handle(ctx context.Context, raw json.RawMessage) (any, error) {
|
func (h *SaveNoteHandler) Handle(ctx context.Context, raw json.RawMessage) (any, error) {
|
||||||
var cmd saveNoteCommand
|
var cmd saveNoteCommand
|
||||||
slog.Debug("Handling SaveNoteCommand", "raw", string(raw))
|
|
||||||
|
|
||||||
if err := json.Unmarshal(raw, &cmd); err != nil {
|
if err := json.Unmarshal(raw, &cmd); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -42,12 +40,9 @@ func (h *SaveNoteHandler) Handle(ctx context.Context, raw json.RawMessage) (any,
|
||||||
|
|
||||||
file, err := filehandling.ReadFile(cmd.Path)
|
file, err := filehandling.ReadFile(cmd.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Debug("Failed to read file", "path", cmd.Path, "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
slog.Debug("Parsed file", "path", cmd.Path, "slug", file.Slug, "title", file.Title, "tags", file.FrontMatter.Tags, "links", file.ExtractedLinks)
|
|
||||||
|
|
||||||
tx, err := h.uow.Begin()
|
tx, err := h.uow.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -56,40 +51,33 @@ func (h *SaveNoteHandler) Handle(ctx context.Context, raw json.RawMessage) (any,
|
||||||
|
|
||||||
note, err := h.noteRepo.GetBySlug(ctx, file.Slug)
|
note, err := h.noteRepo.GetBySlug(ctx, file.Slug)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Debug("Failed to get note by slug", "slug", file.Slug, "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if note == nil {
|
if note == nil {
|
||||||
note, err = h.noteService.CreateNote(ctx, tx, file.Path, file.Title, file.Slug)
|
note, err = h.noteService.CreateNote(ctx, tx, file.Path, file.Title, file.Slug)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Debug("Failed to save new note", "slug", file.Slug, "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err = h.noteService.DeleteNoteMetaData(ctx, tx, note.ID()); err != nil {
|
if err = h.noteService.DeleteNoteMetaData(ctx, tx, note.ID()); err != nil {
|
||||||
slog.Debug("Failed to delete existing note metadata", "noteID", note.ID(), "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = h.noteService.UpdateNote(ctx, tx, note.ID(), file.Path, file.Title, file.Slug); err != nil {
|
if err = h.noteService.UpdateNote(ctx, tx, note.ID(), file.Path, file.Title, file.Slug); err != nil {
|
||||||
slog.Debug("Failed to update existing note", "noteID", note.ID(), "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tagModels, err := h.tagService.CreateTags(ctx, tx, file.FrontMatter.Tags)
|
tagModels, err := h.tagService.CreateTags(ctx, tx, file.FrontMatter.Tags)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Debug("Failed to create tags", "tags", file.FrontMatter.Tags, "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = h.tagService.CreateNoteTags(ctx, tx, note.ID(), tagModels); err != nil {
|
if err = h.tagService.CreateNoteTags(ctx, tx, note.ID(), tagModels); err != nil {
|
||||||
slog.Debug("Failed to create note tags", "noteID", note.ID(), "tags", file.FrontMatter.Tags, "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = h.linkService.CreateLinks(ctx, tx, note.ID(), file.ExtractedLinks); err != nil {
|
if err = h.linkService.CreateLinks(ctx, tx, note.ID(), file.ExtractedLinks); err != nil {
|
||||||
slog.Debug("Failed to create links", "noteID", note.ID(), "links", file.ExtractedLinks, "error", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
26
core/handlers/vault/rebuild_index_handler.go
Normal file
26
core/handlers/vault/rebuild_index_handler.go
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
package vault
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
|
"github.com/KristianJBorgwarth/dendrite.daemon/core/services"
|
||||||
|
"github.com/KristianJBorgwarth/dendrite.daemon/persistence/store"
|
||||||
|
)
|
||||||
|
|
||||||
|
type RebuildIndexHandler struct {
|
||||||
|
idxRebuilder services.IIndexRebuilder
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRebuildIndexHandler(idxR services.IIndexRebuilder) *RebuildIndexHandler {
|
||||||
|
return &RebuildIndexHandler{idxRebuilder: idxR}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h RebuildIndexHandler) Handle(ctx context.Context, raw json.RawMessage) (any, error) {
|
||||||
|
err := h.idxRebuilder.RebuildIndex(ctx, store.GetVaultStore().Config.VaultPath())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
BIN
dendrite
BIN
dendrite
Binary file not shown.
Loading…
Add table
Reference in a new issue