Skip to content

Commit 7a13bd1

Browse files
committed
Advanced search queries
1 parent bfdfcaf commit 7a13bd1

File tree

3 files changed

+31
-21
lines changed

3 files changed

+31
-21
lines changed

cmd/hs/search.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func searchByExt(c *cli.Context, filename string) error {
115115
}
116116
defer db.Close()
117117

118-
r, err := hsdb.Search(db, filename, []string{ext}, limit)
118+
r, err := hsdb.Search(db, filename, []string{ext}, []string{}, limit)
119119
for _, result := range r {
120120
printFileResult(result)
121121
}
@@ -125,27 +125,18 @@ func searchByExt(c *cli.Context, filename string) error {
125125

126126
func searchByHost(c *cli.Context, filename string) error {
127127
host := c.String("host")
128-
limit := c.String("limit")
128+
limit := c.Int("limit")
129129
db, err := dbConn(c.String("db"))
130130
if err != nil {
131131
return fmt.Errorf("failed to get database connection: %v", err)
132132
}
133133
defer db.Close()
134134

135-
query := `
136-
SELECT file_path, file_size, modified_date, host, extension, file_hash
137-
FROM file_info
138-
WHERE (file_path LIKE ? OR file_hash LIKE ?) AND host = ?
139-
LIMIT ?
140-
`
141-
142-
rows, err := db.Query(query, "%"+filename+"%", "%"+filename+"%", host, limit)
143-
if err != nil {
144-
return fmt.Errorf("failed to query database: %v", err)
135+
r, err := hsdb.Search(db, filename, []string{}, []string{host}, limit)
136+
for _, result := range r {
137+
printFileResult(result)
145138
}
146-
defer rows.Close()
147-
148-
return printRows(rows)
139+
return nil
149140
}
150141

151142
func searchFiles(c *cli.Context, filename string) error {
@@ -155,7 +146,7 @@ func searchFiles(c *cli.Context, filename string) error {
155146
}
156147
defer db.Close()
157148

158-
r, err := hsdb.Search(db, filename, []string{}, 100)
149+
r, err := hsdb.Search(db, filename, []string{}, []string{}, 100)
159150
for _, result := range r {
160151
printFileResult(result)
161152
}

internal/api/api.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,19 @@ func searchHandler(dbPath string) http.HandlerFunc {
137137
return
138138
}
139139

140-
results, err := hsdb.Search(db, query, []string{}, 100)
140+
ext := r.URL.Query().Get("ext")
141+
exts := []string{}
142+
if ext != "" {
143+
exts = append(exts, ext)
144+
}
145+
146+
host := r.URL.Query().Get("host")
147+
hosts := []string{}
148+
if host != "" {
149+
hosts = append(hosts, host)
150+
}
151+
152+
results, err := hsdb.Search(db, query, exts, hosts, 100)
141153
if err != nil {
142154
statusJSON(http.StatusInternalServerError, err, w, r)
143155
return

internal/db/db.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func CreateTables(db *sql.DB) error {
5151
return err
5252
}
5353

54-
func Search(db *sql.DB, query string, extensions []string, limit int) ([]*types.FileResult, error) {
54+
func Search(db *sql.DB, query string, extensions []string, hosts []string, limit int) ([]*types.FileResult, error) {
5555
query = strings.Replace(query, " ", "%", -1)
5656
sqlQuery := `
5757
SELECT file_path, file_size, modified_date, host, extension, file_hash
@@ -64,13 +64,20 @@ func Search(db *sql.DB, query string, extensions []string, limit int) ([]*types.
6464

6565
if len(extensions) > 0 {
6666
placeholders := make([]string, len(extensions))
67-
for i := range extensions {
67+
for i, ext := range extensions {
6868
placeholders[i] = "?"
69+
args = append(args, strings.TrimSpace(ext))
6970
}
7071
sqlQuery += fmt.Sprintf(" AND extension IN (%s)", strings.Join(placeholders, ","))
71-
for _, ext := range extensions {
72-
args = append(args, strings.TrimSpace(ext))
72+
}
73+
74+
if len(hosts) > 0 {
75+
placeholders := make([]string, len(hosts))
76+
for i, host := range hosts {
77+
placeholders[i] = "?"
78+
args = append(args, strings.TrimSpace(host))
7379
}
80+
sqlQuery += fmt.Sprintf(" AND host IN (%s)", strings.Join(placeholders, ","))
7481
}
7582

7683
sqlQuery += `

0 commit comments

Comments
 (0)