summaryrefslogtreecommitdiff
path: root/handlerFuncs.go
blob: 78a498e14aa8e7183fe6b8735238d049bae25118 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package main

import (
	"fmt"
	"html/template"
	"net/http"
	"strconv"

	"github.com/meilisearch/meilisearch-go"
)

func searchHandler(w http.ResponseWriter, r *http.Request, index *meilisearch.Index, searchTemplate *template.Template) {
	r.ParseForm()
	fmt.Println(r.Form)
	if r.Form["query"] != nil || r.FormValue("query") != "" {
		fmt.Println("query:", r.Form["query"])
		var myOffset int64
		if r.Form["offset"] != nil {
			offset, _ := strconv.ParseInt(r.FormValue("offset"), 10, 64)
			myOffset = offset
			if offset < 0 {
				myOffset = 0
			}
		} else {
			offset := int64(0)
			myOffset = offset
		}
		query := SearchQuery{
			Query:      r.FormValue("query"),
			MaxResults: 100,
			Offset:     myOffset,
		}

		res, err := index.Search(query.Query, &meilisearch.SearchRequest{
			Limit:  query.MaxResults,
			Offset: query.Offset,
			AttributesToRetrieve: []string{
				"title",
				"applicant",
				"submission_date",
				"predicates",
				"id",
			},
			AttributesToCrop:      []string{"full_text"},
			AttributesToHighlight: []string{"full_text"},
			HighlightPreTag:       "<mark>",
			HighlightPostTag:      "</mark>",
		})

		if err != nil {
			http.Error(w, err.Error(), http.StatusInternalServerError)
			return
		}

		numPages := pageCount(int(res.EstimatedTotalHits), int(query.MaxResults))

		searchTemplate.Execute(w, SearchResponse{
			GlobalVars:    globalVariables,
			Success:       true,
			SearchResults: res.Hits,
			NumResults:    len(res.Hits) + int(query.Offset),
			TotalResults:  res.EstimatedTotalHits,
			MoreResults:   res.EstimatedTotalHits > query.MaxResults,
			OriginalQuery: query,
			Offset:        query.Offset + query.MaxResults,
			LastOffset:    query.Offset - query.MaxResults,
			NumPages:      numPages,
		})
	} else {
		fmt.Println("query is empty")
	}
}

func documentHandler510k(w http.ResponseWriter, r *http.Request, index *meilisearch.Index, template *template.Template) {
	r.ParseForm()
	fmt.Println(r.Form)
	var res interface{}
	var documentID string = r.FormValue("id")
	if r.Form["id"] != nil {
		index.GetDocument(documentID, &meilisearch.DocumentQuery{
			Fields: []string{
				"title",
				"applicant",
				"decision",
				"decision_date",
				"full_text",
				"id",
				"predicates",
				"submission_date",
				"contact",
				"STREET1",
				"STREET2",
				"CITY",
				"STATE",
				"ZIP",
				"COUNTRY_CODE",
				"postal_code",
				"REVIEWADVISECOMM",
				"PRODUCTCODE",
				"STATEORSUMM",
				"CLASSADVISECOMM",
				"SSPINDICATOR",
				"TYPE",
				"THIRDPARTY",
				"EXPEDITEDREVIEW",
			}}, &res)
		fmt.Println(res)
		var year = documentID[1:3]

		template.Execute(w, DocumentResponse{
			GlobalVars:    globalVariables,
			SearchResults: res,
			SummaryPDF:    create_pdf_url(year, documentID),
		})
	} else {
		fmt.Println("No ID provided")
	}

}