Use map for entries and slice for toc instead of iterating over slice with Entries every time

This commit is contained in:
ChaoticByte 2024-08-27 15:27:43 +02:00
parent daaddbb56b
commit 97e4cbb158
No known key found for this signature in database
2 changed files with 13 additions and 33 deletions

View file

@ -7,47 +7,27 @@ import (
"strings" "strings"
) )
type Entry struct {
Name string // from filename
Content string // from content
}
type Database struct { type Database struct {
Entries []Entry Keys []string
} Entries map[string]string
func (db *Database) TOC() []string {
var names []string
for _, e := range db.Entries {
names = append(names, e.Name)
}
return names
}
func (db *Database) Entry(name string) string {
// returns empty string if not found
result := ""
for _, e := range db.Entries {
if e.Name == name {
result = e.Content
}
}
return result
} }
func BuildDB(directory string) Database { func BuildDB(directory string) Database {
logger := log.Default() logger := log.Default()
logger.Println("Building database") logger.Println("Building database")
var entries []Entry // keys, entries
var keys []string
entries := map[string]string{}
// get files in directory and read them // get files in directory and read them
directory = strings.TrimRight(directory, "/") // we don't need that last / -> if '/' is used as directory, you are dumb. directory = strings.TrimRight(directory, "/") // we don't need that last / -> if '/' is used as directory, you are dumb.
entriesDirFs := os.DirFS(directory) entriesDirFs := os.DirFS(directory)
files, err := fs.Glob(entriesDirFs, "*") keys, err := fs.Glob(entriesDirFs, "*")
if err != nil { logger.Panicln(err) } if err != nil { logger.Panicln(err) }
for _, f := range files { for _, k := range keys {
contentB, err := os.ReadFile(directory + "/" + f) contentB, err := os.ReadFile(directory + "/" + k)
if err != nil { logger.Panicln(err) } if err != nil { logger.Panicln(err) }
entries = append(entries, Entry{Name: f, Content: string(contentB)}) entries[k] = string(contentB)
} }
return Database{Entries: entries} // create bleve index
return Database{Keys: keys, Entries: entries}
} }

View file

@ -37,11 +37,11 @@ func handleApplication(w http.ResponseWriter, req *http.Request) {
return return
} }
// load entry // load entry
entry = db.Entry(entryName) entry = db.Entries[entryName]
} }
err = appTemplate.ExecuteTemplate( err = appTemplate.ExecuteTemplate(
w, "app", w, "app",
TemplateData{TOC: db.TOC(), Entry: entry, Title: MainTitle, EntryTitle: entryName}) TemplateData{TOC: db.Keys, Entry: entry, Title: MainTitle, EntryTitle: entryName})
if err != nil { logger.Println(err) } if err != nil { logger.Println(err) }
} }