diff --git a/db/bookmarks.go b/db/bookmarks.go index 2fff59a..509099d 100644 --- a/db/bookmarks.go +++ b/db/bookmarks.go @@ -76,6 +76,7 @@ func (m *BookmarkManager) ListBookmarks() ([]entity.Bookmark, error) { if err != nil { panic(err) } + log.Printf("found %d bookmarks", len(bookmarks)) return bookmarks, nil } @@ -112,6 +113,13 @@ func (m *BookmarkManager) LoadBookmarkByID(id uint64) entity.Bookmark { func (m *BookmarkManager) Search(opts SearchOptions) ([]entity.Bookmark, error) { found := []entity.Bookmark{} + log.Printf("search with query: %s", opts.Query) + if opts.Sort != "" { + panic("unimplemented sort") + } + if len(opts.Tags) > 0 { + panic("unimplemented tags") + } sr, err := m.db.bleve.Search(bleve.NewSearchRequest( query.NewQueryStringQuery(opts.Query))) @@ -157,7 +165,7 @@ func (m *BookmarkManager) ScrapeAndIndex(bm *entity.Bookmark) error { func (m *BookmarkManager) UpdateIndexForBookmark(bm *entity.Bookmark) { log.Printf("inserting into bleve data for %s", bm.URL) - err := m.db.bleve.Index(fmt.Sprint(bm.ID), bm.Info) + err := m.db.bleve.Index(fmt.Sprint(bm.ID), bm) if err != nil { panic(err) } diff --git a/db/db.go b/db/db.go index bbcf6f0..244f232 100644 --- a/db/db.go +++ b/db/db.go @@ -5,6 +5,7 @@ import ( "time" "github.com/blevesearch/bleve/v2" + "github.com/blevesearch/bleve/v2/mapping" "github.com/tardisx/linkwallet/entity" bolthold "github.com/timshannon/bolthold" ) @@ -26,20 +27,7 @@ func (db *DB) Open(path string) error { blevePath := path + ".bleve" - indexMapping := bleve.NewIndexMapping() - pageInfoMapping := bleve.NewDocumentMapping() - indexMapping.AddDocumentMapping("pageinfo", pageInfoMapping) - - // entity.PageInfo - titleFieldMapping := bleve.NewTextFieldMapping() - titleFieldMapping.Analyzer = "en" - pageInfoMapping.AddFieldMappingsAt("Title", titleFieldMapping) - - rawTextFieldMapping := bleve.NewTextFieldMapping() - rawTextFieldMapping.Analyzer = "en" - pageInfoMapping.AddFieldMappingsAt("RawText", rawTextFieldMapping) - - index, err := bleve.New(blevePath, indexMapping) + index, err := bleve.New(blevePath, createIndexMapping()) if err != nil { if err == bleve.ErrorIndexPathExists { @@ -58,6 +46,24 @@ func (db *DB) Open(path string) error { return nil } +func createIndexMapping() mapping.IndexMapping { + + indexMapping := bleve.NewIndexMapping() + + pageInfoMapping := bleve.NewDocumentMapping() + pageInfoMapping.AddFieldMappingsAt("Title", bleve.NewTextFieldMapping()) + pageInfoMapping.AddFieldMappingsAt("Size", bleve.NewNumericFieldMapping()) + pageInfoMapping.AddFieldMappingsAt("RawText", bleve.NewTextFieldMapping()) + + bookmarkMapping := bleve.NewDocumentMapping() + bookmarkMapping.AddFieldMappingsAt("URL", bleve.NewTextFieldMapping()) + bookmarkMapping.AddFieldMappingsAt("Tags", bleve.NewTextFieldMapping()) + bookmarkMapping.AddSubDocumentMapping("Info", pageInfoMapping) + + indexMapping.AddDocumentMapping("bookmark", bookmarkMapping) + return indexMapping +} + func (db *DB) Close() { db.store.Close() } diff --git a/web/templates/manage.html b/web/templates/manage.html index b756762..4aa6145 100644 --- a/web/templates/manage.html +++ b/web/templates/manage.html @@ -12,9 +12,7 @@ hx-indicator="#htmx-indicator-search" id="manage-search" /> - {{ template "tags_widget.html" . }} {{ template "manage_results.html" . }} - diff --git a/web/web.go b/web/web.go index cef62ca..c0a72c7 100644 --- a/web/web.go +++ b/web/web.go @@ -136,14 +136,15 @@ func Create(bmm *db.BookmarkManager, cmm *db.ConfigManager) *Server { r.POST("/manage/results", func(c *gin.Context) { query := c.PostForm("query") - tags := []string{} sort := c.Query("sort") - if c.PostForm("tags_hidden") != "" { - tags = strings.Split(c.PostForm("tags_hidden"), "|") + bookmarks := []entity.Bookmark{} + if query == "" { + bookmarks, _ = bmm.ListBookmarks() + } else { + bookmarks, _ = bmm.Search(db.SearchOptions{Query: query, Sort: sort}) } - allBookmarks, _ := bmm.Search(db.SearchOptions{Query: query, Tags: tags, Sort: sort}) - meta := gin.H{"config": config, "bookmarks": allBookmarks} + meta := gin.H{"config": config, "bookmarks": bookmarks} colTitle := &ColumnInfo{Name: "Title/URL", Param: "title"} colCreated := &ColumnInfo{Name: "Created", Param: "created", Class: "show-for-large"}