diff --git a/src/Server/Helper/DatabaseHelper.cs b/src/Server/Helper/DatabaseHelper.cs index 66a031e..c86808f 100644 --- a/src/Server/Helper/DatabaseHelper.cs +++ b/src/Server/Helper/DatabaseHelper.cs @@ -1,4 +1,3 @@ -using System.Configuration; using System.Data.Common; using System.Text; using System.Text.Json; @@ -72,6 +71,18 @@ public class DatabaseHelper(ILogger logger) return helper.ExecuteSQLCommandGetInsertedID("INSERT INTO attribute (attribute, value, id_entity) VALUES (@attribute, @value, @id_entity)", parameters); } + public static int DatabaseInsertAttributes(SQLHelper helper, List<(string attribute, string value, int id_entity)> values) //string[] attribute, string value, int id_entity) + { + return helper.BulkExecuteNonQuery( + "INSERT INTO attribute (attribute, value, id_entity) VALUES (@attribute, @value, @id_entity)", + values.Select(element => new object[] { + new MySqlParameter("@attribute", element.attribute), + new MySqlParameter("@value", element.value), + new MySqlParameter("@id_entity", element.id_entity) + }) + ); + } + public static int DatabaseInsertDatapoint(SQLHelper helper, string name, ProbMethodEnum probmethod_embedding, SimilarityMethodEnum similarityMethod, string hash, int id_entity) { Dictionary parameters = new() diff --git a/src/Server/Helper/SearchdomainHelper.cs b/src/Server/Helper/SearchdomainHelper.cs index 0ea2ff9..0b307f0 100644 --- a/src/Server/Helper/SearchdomainHelper.cs +++ b/src/Server/Helper/SearchdomainHelper.cs @@ -245,10 +245,16 @@ public class SearchdomainHelper(ILogger logger, DatabaseHelp else { int id_entity = DatabaseHelper.DatabaseInsertEntity(helper, jsonEntity.Name, jsonEntity.Probmethod, _databaseHelper.GetSearchdomainID(helper, jsonEntity.Searchdomain)); + List<(string attribute, string value, int id_entity)> values = []; foreach (KeyValuePair attribute in jsonEntity.Attributes) { - DatabaseHelper.DatabaseInsertAttribute(helper, attribute.Key, attribute.Value, id_entity); // TODO implement bulk insert to reduce number of queries + values.Add(new() { + attribute = attribute.Key, + value = attribute.Value, + id_entity = id_entity + }); } + DatabaseHelper.DatabaseInsertAttributes(helper, values); List datapoints = []; foreach (JSONDatapoint jsonDatapoint in jsonEntity.Datapoints)