Cache results

This commit is contained in:
Brian Buller 2018-05-11 17:11:51 -05:00
parent bd9a72920f
commit 5b795b1e93
2 changed files with 12 additions and 5 deletions

View File

@ -16,7 +16,8 @@ type GimeDB struct {
path string
filename, arch string
AllTypes []int
AllTypes []int
TypeCollections map[int]*TimeEntryCollection
}
const (
@ -49,10 +50,11 @@ func LoadDatabase(path, name, archName string) (*GimeDB, error) {
path = path + "/"
}
gdb := GimeDB{
path: path,
filename: name,
arch: archName,
AllTypes: []int{TypeCurrent, TypeRecent, TypeArchive},
path: path,
filename: name,
arch: archName,
AllTypes: []int{TypeCurrent, TypeRecent, TypeArchive},
TypeCollections: make(map[int]*TimeEntryCollection),
}
if err := gdb.initDatabase(); err != nil {
fmt.Println(err.Error())
@ -63,11 +65,15 @@ func LoadDatabase(path, name, archName string) (*GimeDB, error) {
// Load a TimeEntry collection from a database
func (gdb *GimeDB) LoadTimeEntryCollection(tp int) *TimeEntryCollection {
if v, ok := gdb.TypeCollections[tp]; ok {
return v
}
ret := new(TimeEntryCollection)
entries := gdb.dbGetAllTimeEntries(tp)
for i := range entries {
ret.Push(&entries[i])
}
gdb.TypeCollections[tp] = ret
return ret
}

View File

@ -225,6 +225,7 @@ func (gdb *GimeDB) dbGetAllTimeEntries(tp int) []TimeEntry {
ret = append(ret, *te)
}
}
return ret
}