From f1a9a8a95d25361ea2a502b30062adc86feb2500 Mon Sep 17 00:00:00 2001 From: Jonas Leder <jonas@jonasled.de> Date: Sun, 26 Jan 2025 15:24:32 +0100 Subject: [PATCH] cache value types in local memory, to speedup inserts --- database/getOrCreateValueType.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/database/getOrCreateValueType.go b/database/getOrCreateValueType.go index 9e51c1a..ec2fdb9 100644 --- a/database/getOrCreateValueType.go +++ b/database/getOrCreateValueType.go @@ -6,13 +6,19 @@ import ( "jonasled.dev/jonasled/ems-esp-logger/log" ) +var valueTypeCache = make(map[string]tables.ValueType) + func GetOrCreateValueType(name string) tables.ValueType { + if cachedValueType, found := valueTypeCache[name]; found { + return cachedValueType + } + + // If it's not in the cache, query the database var valueType tables.ValueType err := Db.Where("name = ?", name).First(&valueType).Error if err != nil { if err == gorm.ErrRecordNotFound { - // Create a new instance if it doesn't exist valueType = tables.ValueType{ Name: name, } @@ -25,6 +31,7 @@ func GetOrCreateValueType(name string) tables.ValueType { } } - return valueType + valueTypeCache[name] = valueType + return valueType } -- GitLab