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