// Copyright (C) 2021 Marius Schellenberger package server import ( "runtime" "strconv" "git.giftfish.de/ston1th/docstore/pkg/core" bleve "git.giftfish.de/ston1th/docstore/pkg/index" ) const div = 1048576 func fmtMem(i uint64) string { return strconv.FormatFloat(float64(i)/div, 'f', 2, 64) } func getStats(i *bleve.Index) *core.Stats { mem := new(runtime.MemStats) runtime.ReadMemStats(mem) return &core.Stats{ Goroutines: runtime.NumGoroutine(), Alloc: fmtMem(mem.Alloc), Sys: fmtMem(mem.Sys), Docs: i.DocCount(), GoVersion: runtime.Version(), } } func scanFile(srv *HTTPServer, path string) (err error) { err = srv.FS.AddScan(path) if err != nil { return } go func() { defer srv.FS.RemoveScan(path) log := srv.Log.WithValues("file", path) file, txt, err := srv.Scanner.Scan(path) if err != nil { log.Error(err, "error scanning file") return } tags, err := srv.DB.GetAllRTags() if err != nil { log.Error(err, "error getting tags") } found := tags.Match(txt) id, err := srv.DB.Index.Add(txt, found) if err != nil { log.Error(err, "error adding file to index") return } err = srv.DB.NewFile(id, file, found) if err != nil { log.Error(err, "error adding file to DB") } }() return } // Parts taken from strings.TrimPrefix func hasTrimPrefix(s, prefix string) (string, bool) { if len(s) >= len(prefix) && s[0:len(prefix)] == prefix { return s[len(prefix):], true } return s, false }