feat: add support for content search (#1728)

* Change MemoFind.ContentSearch to slice

* Add support for content search

* Change for go-simple sugguest

---------

Co-authored-by: Athurg Feng <athurg@gooth.org>
This commit is contained in:
Athurg Gooth 2023-05-26 18:51:18 +08:00 committed by GitHub
parent 1282fe732e
commit 4ea5426e18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 10 deletions

View File

@ -84,7 +84,7 @@ type FindMemoRequest struct {
// Domain specific fields
Pinned *bool
ContentSearch *string
ContentSearch []string
VisibilityList []Visibility
// Pagination

View File

@ -272,11 +272,18 @@ func (s *Server) registerMemoRoutes(g *echo.Group) {
pinned := pinnedStr == "true"
findMemoMessage.Pinned = &pinned
}
contentSearch := []string{}
tag := c.QueryParam("tag")
if tag != "" {
contentSearch := "#" + tag
findMemoMessage.ContentSearch = &contentSearch
contentSearch = append(contentSearch, "#"+tag)
}
contentSlice := c.QueryParams()["content"]
if len(contentSlice) > 0 {
contentSearch = append(contentSearch, contentSlice...)
}
findMemoMessage.ContentSearch = contentSearch
visibilityListStr := c.QueryParam("visibility")
if visibilityListStr != "" {
visibilityList := []store.Visibility{}
@ -431,11 +438,18 @@ func (s *Server) registerMemoRoutes(g *echo.Group) {
pinned := pinnedStr == "true"
findMemoMessage.Pinned = &pinned
}
contentSearch := []string{}
tag := c.QueryParam("tag")
if tag != "" {
contentSearch := "#" + tag + " "
findMemoMessage.ContentSearch = &contentSearch
contentSearch = append(contentSearch, "#"+tag+" ")
}
contentSlice := c.QueryParams()["content"]
if len(contentSlice) > 0 {
contentSearch = append(contentSearch, contentSlice...)
}
findMemoMessage.ContentSearch = contentSearch
visibilityListStr := c.QueryParam("visibility")
if visibilityListStr != "" {
visibilityList := []store.Visibility{}

View File

@ -71,11 +71,10 @@ func (s *Server) registerTagRoutes(g *echo.Group) {
if !ok {
return echo.NewHTTPError(http.StatusBadRequest, "Missing user session")
}
contentSearch := "#"
normalRowStatus := store.Normal
memoFind := &store.FindMemoMessage{
CreatorID: &userID,
ContentSearch: &contentSearch,
ContentSearch: []string{"#"},
RowStatus: &normalRowStatus,
}

View File

@ -62,7 +62,7 @@ type FindMemoMessage struct {
// Domain specific fields
Pinned *bool
ContentSearch *string
ContentSearch []string
VisibilityList []Visibility
// Pagination
@ -233,8 +233,10 @@ func listMemos(ctx context.Context, tx *sql.Tx, find *FindMemoMessage) ([]*MemoM
if v := find.Pinned; v != nil {
where = append(where, "memo_organizer.pinned = 1")
}
if v := find.ContentSearch; v != nil {
where, args = append(where, "memo.content LIKE ?"), append(args, "%"+*v+"%")
if v := find.ContentSearch; len(v) != 0 {
for _, s := range v {
where, args = append(where, "memo.content LIKE ?"), append(args, "%"+s+"%")
}
}
if v := find.VisibilityList; len(v) != 0 {
list := []string{}