package movies import ( "fmt" "os" "path/filepath" "strings" ) type FileSource struct { ID string Files []string } func (fs *FileSource) Scan(root string) error { var files []string if err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if info.IsDir() { return nil } files = append(files, path) return nil }); err != nil { return fmt.Errorf("error while walking directory %q: %w", root, err) } fs.Files = files return nil } func (fs *FileSource) Search(query string) []string { var res []string for _, path := range fs.Files { if strings.Contains(strings.ToLower(path), strings.ToLower(query)) { res = append(res, path) } } return res }