diff --git a/database/getOrCreateValueType.go b/database/getOrCreateValueType.go index 9e51c1a67ae9fca45bb9af7dc4c35220a243b4f7..ec2fdb96d5c1a9a758462031e519c53f61739fef 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 }