public static IEnumerable <WriteObject> GetAllMissing2(string firstRunId, string secondRunId) { string SQL_GROUPED = "SELECT run_id, result_type, serialized FROM collect WHERE run_id = @first_run_id OR run_id = @second_run_id AND identity in (SELECT identity FROM collect WHERE run_id = @first_run_id OR run_id = @second_run_id GROUP BY identity HAVING COUNT(*) == 1);"; var output = new ConcurrentQueue <WriteObject>(); Connections.AsParallel().ForAll(cxn => { using var cmd = new SqliteCommand(SQL_GROUPED, cxn.Connection, cxn.Transaction); cmd.Parameters.AddWithValue("@first_run_id", firstRunId); cmd.Parameters.AddWithValue("@second_run_id", secondRunId); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var runId = reader["run_id"].ToString(); var resultTypeString = reader["result_type"].ToString(); if (runId != null && resultTypeString != null) { var wo = WriteObject.FromString((string)reader["serialized"], (RESULT_TYPE)Enum.Parse(typeof(RESULT_TYPE), resultTypeString), runId); if (wo is WriteObject WO) { output.Enqueue(WO); } } } } }); return(output); }
public static IEnumerable <WriteObject> GetAllMissingExplicit(string firstRunId, string secondRunId) { var output = new ConcurrentQueue <WriteObject>(); Connections.AsParallel().ForAll(cxn => { using var cmd = new SqliteCommand(SQL_GET_UNIQUE_BETWEEN_RUNS_EXPLICIT, cxn.Connection, cxn.Transaction); cmd.Parameters.AddWithValue("@first_run_id", firstRunId); cmd.Parameters.AddWithValue("@second_run_id", secondRunId); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var runId = reader["run_id"].ToString(); var resultTypeString = reader["result_type"].ToString(); if (runId != null && resultTypeString != null) { var wo = WriteObject.FromString((string)reader["serialized"], (RESULT_TYPE)Enum.Parse(typeof(RESULT_TYPE), resultTypeString), runId); if (wo is WriteObject WO) { output.Enqueue(WO); } } } } }); return(output); }
public static ConcurrentBag <(WriteObject, WriteObject)> GetModified(string firstRunId, string secondRunId) { var output = new ConcurrentBag <(WriteObject, WriteObject)>(); Connections.AsParallel().ForAll(cxn => { using var cmd = new SQLiteCommand(SQL_GET_COLLECT_MODIFIED, cxn.Connection, cxn.Transaction); cmd.Parameters.AddWithValue("@first_run_id", firstRunId); cmd.Parameters.AddWithValue("@second_run_id", secondRunId); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var aRunId = reader["a_run_id"].ToString(); var bRunId = reader["b_run_id"].ToString(); var aResultType = reader["a_result_type"].ToString(); var bResultType = reader["b_result_type"].ToString(); if (aRunId != null && bRunId != null && aResultType != null && bResultType != null) { var val1 = WriteObject.FromString((string)reader["a_serialized"], (RESULT_TYPE)Enum.Parse(typeof(RESULT_TYPE), aResultType), aRunId); var val2 = WriteObject.FromString((string)reader["b_serialized"], (RESULT_TYPE)Enum.Parse(typeof(RESULT_TYPE), bResultType), bRunId); if (val1 is WriteObject V1 && val2 is WriteObject V2) { output.Add((V1, V2)); } } } } }); return(output); }
public static IEnumerable <WriteObject> GetResultsByRunid(string runid) { foreach (var cxn in Connections) { using var cmd = new SqliteCommand(SQL_GET_RESULTS_BY_RUN_ID, cxn.Connection, cxn.Transaction); cmd.Parameters.AddWithValue("@run_id", runid); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var runId = reader["run_id"].ToString(); var resultTypeString = reader["result_type"].ToString(); if (runId != null && resultTypeString != null) { var wo = WriteObject.FromString((string)reader["serialized"], (RESULT_TYPE)Enum.Parse(typeof(RESULT_TYPE), resultTypeString), runId); if (wo is WriteObject WO) { yield return(WO); } } } } } }
public static ConcurrentBag <WriteObject> GetMissingFromFirst(string firstRunId, string secondRunId) { var output = new ConcurrentBag <WriteObject>(); Connections.AsParallel().ForAll(cxn => { using var cmd = new SQLiteCommand(SQL_GET_COLLECT_MISSING_IN_B, cxn.Connection, cxn.Transaction); cmd.Parameters.AddWithValue("@first_run_id", firstRunId); cmd.Parameters.AddWithValue("@second_run_id", secondRunId); using (var reader = cmd.ExecuteReader()) while (reader.Read()) { var runId = reader["run_id"].ToString(); var resultTypeString = reader["result_type"].ToString(); if (runId != null && resultTypeString != null) { var wo = WriteObject.FromString((string)reader["serialized"], (RESULT_TYPE)Enum.Parse(typeof(RESULT_TYPE), resultTypeString), runId); if (wo is WriteObject WO) { output.Add(WO); } } } }); return(output); }