From 4d4e7acb6255676337b0f4f0ee4d590ba31357b7 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Mon, 30 Sep 2019 13:02:53 +1000 Subject: Move Query method in Builder to its own class and make it public. Sort results. Skip tables that don't exist. --- src/WixBuildTools.TestSupport/Query.cs | 62 ++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/WixBuildTools.TestSupport/Query.cs (limited to 'src/WixBuildTools.TestSupport/Query.cs') diff --git a/src/WixBuildTools.TestSupport/Query.cs b/src/WixBuildTools.TestSupport/Query.cs new file mode 100644 index 00000000..a5883067 --- /dev/null +++ b/src/WixBuildTools.TestSupport/Query.cs @@ -0,0 +1,62 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixBuildTools.TestSupport +{ + using System; + using System.Collections.Generic; + using System.Text; + using WixToolset.Dtf.WindowsInstaller; + + public class Query + { + public static string[] QueryDatabase(string path, string[] tables) + { + var results = new List(); + + if (tables?.Length > 0) + { + var sb = new StringBuilder(); + using (var db = new Database(path)) + { + foreach (var table in tables) + { + if (!db.IsTablePersistent(table)) + { + continue; + } + + using (var view = db.OpenView($"SELECT * FROM `{table}`")) + { + view.Execute(); + + Record record; + while ((record = view.Fetch()) != null) + { + sb.Clear(); + sb.AppendFormat("{0}:", table); + + using (record) + { + for (var i = 0; i < record.FieldCount; ++i) + { + if (i > 0) + { + sb.Append("\t"); + } + + sb.Append(record[i + 1]?.ToString()); + } + } + + results.Add(sb.ToString()); + } + } + } + } + } + + results.Sort(); + return results.ToArray(); + } + } +} -- cgit v1.2.3-55-g6feb