From c841f32ba66e9cc1c866291ada1799c92658a680 Mon Sep 17 00:00:00 2001 From: sebastien-sougnez Date: Fri, 13 Jul 2018 15:10:21 +0200 Subject: [PATCH 1/3] Added "Select" and "AndSelect" to "PetaPocoSqlExtensions" to be able to select columns based on predicated instead of string values. --- src/Umbraco.Core/Persistence/PetaPoco.cs | 13 +++- .../Persistence/PetaPocoSqlExtensions.cs | 72 +++++++++++++++++- .../Persistence/Querying/PetaPocoSqlTests.cs | 76 ++++++++++++++++++- src/Umbraco.Web.UI.Client/vwd.webinfo | 8 ++ 4 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/vwd.webinfo diff --git a/src/Umbraco.Core/Persistence/PetaPoco.cs b/src/Umbraco.Core/Persistence/PetaPoco.cs index 4692cb4b51..735691f6d6 100644 --- a/src/Umbraco.Core/Persistence/PetaPoco.cs +++ b/src/Umbraco.Core/Persistence/PetaPoco.cs @@ -2494,9 +2494,9 @@ namespace Umbraco.Core.Persistence // Now do rhs if (_rhs != null) _rhs.Build(sb, args, this); - } + } - public Sql Where(string sql, params object[] args) + public Sql Where(string sql, params object[] args) { return Append(new Sql("WHERE (" + sql + ")", args)); } @@ -2509,9 +2509,14 @@ namespace Umbraco.Core.Persistence public Sql Select(params object[] columns) { return Append(new Sql("SELECT " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); - } + } - public Sql From(params object[] tables) + public Sql AndSelect(params object[] columns) + { + return Append(new Sql(", " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); + } + + public Sql From(params object[] tables) { return Append(new Sql("FROM " + String.Join(", ", (from x in tables select x.ToString()).ToArray()))); } diff --git a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs index 090410782a..7b383f85d1 100644 --- a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs +++ b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs @@ -1,6 +1,5 @@ using System; using System.Collections; -using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Reflection; @@ -15,6 +14,57 @@ namespace Umbraco.Core.Persistence /// public static class PetaPocoSqlExtensions { + /// + /// Defines the column to select in the generated SQL query + /// + /// + /// Sql object + /// Columns to select + /// + [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] + public static Sql Select(this Sql sql, params Expression>[] fields) + { + return sql.Select(GetColumnsList(SqlSyntaxContext.SqlSyntaxProvider, fields)); + } + + /// + /// Defines the column to select in the generated SQL query + /// + /// + /// Sql object + /// Sql syntax + /// Columns to select + /// + public static Sql Select(this Sql sql, ISqlSyntaxProvider sqlSyntax, params Expression>[] fields) + { + return sql.Select(GetColumnsList(sqlSyntax, fields)); + } + + /// + /// Adds another set of field to select. This method must be used with "Select" when fecthing fields from different tables. + /// + /// + /// Sql object + /// Additional columns to select + /// + public static Sql AndSelect(this Sql sql, params Expression>[] fields) + { + return sql.AndSelect(GetColumnsList(SqlSyntaxContext.SqlSyntaxProvider, fields)); + } + + /// + /// Adds another set of field to select. This method must be used with "Select" when fecthing fields from different tables. + /// + /// + /// Sql object + /// Sql syntax + /// Additional columns to select + /// + public static Sql AndSelect(this Sql sql, ISqlSyntaxProvider sqlSyntax, params Expression>[] fields) + { + return sql.AndSelect(GetColumnsList(sqlSyntax, fields)); + } + [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] public static Sql From(this Sql sql) { @@ -239,5 +289,23 @@ namespace Umbraco.Core.Persistence var attr = column.FirstAttribute(); return attr == null || string.IsNullOrWhiteSpace(attr.Name) ? column.Name : attr.Name; } + + private static string[] GetColumnsList(ISqlSyntaxProvider sqlSyntax, params Expression>[] fields) + { + string tableName = sqlSyntax.GetQuotedTableName(GetTableName(typeof(T))); + + if (fields.Length == 0) + { + return new[] { string.Format("{0}.*", tableName) }; + } + + return fields.Select(field => + { + var column = ExpressionHelper.FindProperty(field) as PropertyInfo; + var columnName = GetColumnName(column); + + return string.Format("{0}.{1}", tableName, sqlSyntax.GetQuotedColumnName(columnName)); + }).ToArray(); + } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs index 39f3f484d0..25f0946257 100644 --- a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs @@ -9,6 +9,7 @@ using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Repositories; using Umbraco.Tests.TestHelpers; using Umbraco.Core.Persistence.Querying; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Tests.Persistence.Querying { @@ -25,13 +26,13 @@ namespace Umbraco.Tests.Persistence.Querying Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[path]) LIKE upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); - Assert.AreEqual(content.Path + "%", sql.Arguments[0]); + Assert.AreEqual(content.Path + "%", sql.Arguments[0]); } [Test] public void Where_Clause_With_Starts_With_By_Variable() { - var content = new NodeDto() {NodeId = 123, Path = "-1,123"}; + var content = new NodeDto() { NodeId = 123, Path = "-1,123" }; var sql = new Sql("SELECT *").From().Where(x => x.Path.StartsWith(content.Path) && x.NodeId != content.NodeId); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ((upper([umbracoNode].[path]) LIKE upper(@0) AND ([umbracoNode].[id] <> @1)))", sql.SQL.Replace("\n", " ")); @@ -260,5 +261,74 @@ namespace Umbraco.Tests.Persistence.Querying Debug.Print(sql.SQL); } + + [Test] + public void Can_Use_Select_With_Star_And_Predicate() + { + var expected = new Sql(); + expected.Select("[cmsContent].*") + .From("[cmsContent]"); + + var sql = new Sql(); + sql.Select() + .From(); + + Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); + + Debug.Print(sql.SQL); + } + + [Test] + public void Can_Use_Select_With_One_Column_And_Predicate() + { + var expected = new Sql(); + expected.Select("[cmsContent].[nodeId]") + .From("[cmsContent]"); + + var sql = new Sql(); + sql.Select(c => c.NodeId) + .From(); + + Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); + + Debug.Print(sql.SQL); + } + + [Test] + public void Can_Use_Select_With_Multiple_Column_And_Predicate() + { + var expected = new Sql(); + expected.Select("[cmsContent].[nodeId]", "[cmsContent].[contentType]", "[cmsContent].[pk]") + .From("[cmsContent]"); + + var sql = new Sql(); + sql.Select(c => c.NodeId, c => c.ContentTypeId, c => c.PrimaryKey) + .From(); + + Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); + + Debug.Print(sql.SQL); + } + + [Test] + public void Can_InnerJoin_With_Select_And_AndSelect() + { + var expected = new Sql(); + expected.Select("[cmsDocument].[nodeId], [cmsDocument].[published]\n, [cmsContentVersion].[id]") + .From("[cmsDocument]") + .InnerJoin("[cmsContentVersion]") + .On("[cmsDocument].[versionId] = [cmsContentVersion].[VersionId]"); + + var sql = new Sql(); + sql.Select(d => d.NodeId, d => d.Published) + .AndSelect(cv => cv.Id) + .From() + .InnerJoin() + .On(left => left.VersionId, right => right.VersionId); + + Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); + + Debug.Print(sql.SQL); + } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Web.UI.Client/vwd.webinfo b/src/Umbraco.Web.UI.Client/vwd.webinfo new file mode 100644 index 0000000000..44d783b1df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/vwd.webinfo @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file From a03173da4dc1a964e0ba8771c166ba0aadf1e3d1 Mon Sep 17 00:00:00 2001 From: ssougnez Date: Sat, 14 Jul 2018 00:11:04 +0200 Subject: [PATCH 2/3] Update the code to use the GetFieldName method instead of recreating it --- .../Persistence/PetaPocoSqlExtensions.cs | 36 ++++++++----------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs index 7b383f85d1..1af0f4d4fa 100644 --- a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs +++ b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs @@ -24,7 +24,7 @@ namespace Umbraco.Core.Persistence [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] public static Sql Select(this Sql sql, params Expression>[] fields) { - return sql.Select(GetColumnsList(SqlSyntaxContext.SqlSyntaxProvider, fields)); + return sql.Select(GetFieldNames(SqlSyntaxContext.SqlSyntaxProvider, fields)); } /// @@ -37,7 +37,7 @@ namespace Umbraco.Core.Persistence /// public static Sql Select(this Sql sql, ISqlSyntaxProvider sqlSyntax, params Expression>[] fields) { - return sql.Select(GetColumnsList(sqlSyntax, fields)); + return sql.Select(GetFieldNames(sqlSyntax, fields)); } /// @@ -49,7 +49,7 @@ namespace Umbraco.Core.Persistence /// public static Sql AndSelect(this Sql sql, params Expression>[] fields) { - return sql.AndSelect(GetColumnsList(SqlSyntaxContext.SqlSyntaxProvider, fields)); + return sql.AndSelect(GetFieldNames(SqlSyntaxContext.SqlSyntaxProvider, fields)); } /// @@ -62,7 +62,7 @@ namespace Umbraco.Core.Persistence /// public static Sql AndSelect(this Sql sql, ISqlSyntaxProvider sqlSyntax, params Expression>[] fields) { - return sql.AndSelect(GetColumnsList(sqlSyntax, fields)); + return sql.AndSelect(GetFieldNames(sqlSyntax, fields)); } [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] @@ -105,6 +105,16 @@ namespace Umbraco.Core.Persistence return sqlSyntax.GetQuotedTableName(tableName) + "." + sqlSyntax.GetQuotedColumnName(fieldName); } + private static string[] GetFieldNames(ISqlSyntaxProvider sqlSyntax, params Expression>[] fields) + { + if (fields.Length == 0) + { + return new[] { string.Format("{0}.*", sqlSyntax.GetQuotedTableName(typeof(T).GetTableName())) }; + } + + return fields.Select(field => GetFieldName(field, sqlSyntax)).ToArray(); + } + [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] public static Sql WhereIn(this Sql sql, Expression> fieldSelector, IEnumerable values) { @@ -289,23 +299,5 @@ namespace Umbraco.Core.Persistence var attr = column.FirstAttribute(); return attr == null || string.IsNullOrWhiteSpace(attr.Name) ? column.Name : attr.Name; } - - private static string[] GetColumnsList(ISqlSyntaxProvider sqlSyntax, params Expression>[] fields) - { - string tableName = sqlSyntax.GetQuotedTableName(GetTableName(typeof(T))); - - if (fields.Length == 0) - { - return new[] { string.Format("{0}.*", tableName) }; - } - - return fields.Select(field => - { - var column = ExpressionHelper.FindProperty(field) as PropertyInfo; - var columnName = GetColumnName(column); - - return string.Format("{0}.{1}", tableName, sqlSyntax.GetQuotedColumnName(columnName)); - }).ToArray(); - } } } From 65d68aefadbe77f8d7d92355ad897eb76589cffd Mon Sep 17 00:00:00 2001 From: ssougnez Date: Sat, 14 Jul 2018 20:18:17 +0200 Subject: [PATCH 3/3] - Removed new obsolete method - Fix tests --- .../Persistence/PetaPocoSqlExtensions.cs | 27 +---- .../Persistence/Querying/PetaPocoSqlTests.cs | 107 +++++++++++------- src/Umbraco.Web.UI.Client/vwd.webinfo | 8 -- 3 files changed, 67 insertions(+), 75 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/vwd.webinfo diff --git a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs index 1af0f4d4fa..b9cb8801b9 100644 --- a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs +++ b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs @@ -14,19 +14,6 @@ namespace Umbraco.Core.Persistence /// public static class PetaPocoSqlExtensions { - /// - /// Defines the column to select in the generated SQL query - /// - /// - /// Sql object - /// Columns to select - /// - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql Select(this Sql sql, params Expression>[] fields) - { - return sql.Select(GetFieldNames(SqlSyntaxContext.SqlSyntaxProvider, fields)); - } - /// /// Defines the column to select in the generated SQL query /// @@ -39,19 +26,7 @@ namespace Umbraco.Core.Persistence { return sql.Select(GetFieldNames(sqlSyntax, fields)); } - - /// - /// Adds another set of field to select. This method must be used with "Select" when fecthing fields from different tables. - /// - /// - /// Sql object - /// Additional columns to select - /// - public static Sql AndSelect(this Sql sql, params Expression>[] fields) - { - return sql.AndSelect(GetFieldNames(SqlSyntaxContext.SqlSyntaxProvider, fields)); - } - + /// /// Adds another set of field to select. This method must be used with "Select" when fecthing fields from different tables. /// diff --git a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs index 25f0946257..50b78fa078 100644 --- a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs @@ -1,28 +1,27 @@ -using System; +using NUnit.Framework; using System.Diagnostics; using System.Linq; -using NUnit.Framework; -using Umbraco.Core.Models; -using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Repositories; -using Umbraco.Tests.TestHelpers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; +using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.Persistence.Querying { [TestFixture] public class PetaPocoSqlTests : BaseUsingSqlCeSyntax { + private readonly ISqlSyntaxProvider sqlSyntax = new SqlCeSyntaxProvider(); //x => [Test] public void Where_Clause_With_Starts_With_Additional_Parameters() { var content = new NodeDto() { NodeId = 123, Path = "-1,123" }; - var sql = new Sql("SELECT *").From().Where(x => x.Path.SqlStartsWith(content.Path, TextColumnType.NVarchar)); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Path.SqlStartsWith(content.Path, TextColumnType.NVarchar), sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[path]) LIKE upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -33,7 +32,9 @@ namespace Umbraco.Tests.Persistence.Querying public void Where_Clause_With_Starts_With_By_Variable() { var content = new NodeDto() { NodeId = 123, Path = "-1,123" }; - var sql = new Sql("SELECT *").From().Where(x => x.Path.StartsWith(content.Path) && x.NodeId != content.NodeId); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Path.StartsWith(content.Path) && x.NodeId != content.NodeId, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ((upper([umbracoNode].[path]) LIKE upper(@0) AND ([umbracoNode].[id] <> @1)))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -45,7 +46,9 @@ namespace Umbraco.Tests.Persistence.Querying public void Where_Clause_With_Not_Starts_With() { var level = 1; - var sql = new Sql("SELECT *").From().Where(x => x.Level == level && !x.Path.StartsWith("-20")); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Level == level && !x.Path.StartsWith("-20"), sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ((([umbracoNode].[level] = @0) AND NOT (upper([umbracoNode].[path]) LIKE upper(@1))))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -57,7 +60,9 @@ namespace Umbraco.Tests.Persistence.Querying public void Where_Clause_With_EqualsFalse_Starts_With() { var level = 1; - var sql = new Sql("SELECT *").From().Where(x => x.Level == level && x.Path.StartsWith("-20") == false); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Level == level && x.Path.StartsWith("-20") == false, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ((([umbracoNode].[level] = @0) AND NOT (upper([umbracoNode].[path]) LIKE upper(@1))))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -68,7 +73,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_Equals_Clause() { - var sql = new Sql("SELECT *").From().Where(x => x.Text.Equals("Hello@world.com")); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Text.Equals("Hello@world.com"), sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[text]) = upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -78,7 +85,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_False_Boolean() { - var sql = new Sql("SELECT *").From().Where(x => !x.Trashed); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => !x.Trashed, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (NOT ([umbracoNode].[trashed] = @0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -88,7 +97,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_EqualsFalse_Boolean() { - var sql = new Sql("SELECT *").From().Where(x => x.Trashed == false); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Trashed == false, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (NOT ([umbracoNode].[trashed] = @0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -98,7 +109,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_Boolean() { - var sql = new Sql("SELECT *").From().Where(x => x.Trashed); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Trashed, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ([umbracoNode].[trashed] = @0)", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -108,7 +121,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_ToUpper() { - var sql = new Sql("SELECT *").From().Where(x => x.Text.ToUpper() == "hello".ToUpper()); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Text.ToUpper() == "hello".ToUpper(), sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ((upper([umbracoNode].[text]) = upper(@0)))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -118,7 +133,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_ToString() { - var sql = new Sql("SELECT *").From().Where(x => x.Text == 1.ToString()); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Text == 1.ToString(), sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (([umbracoNode].[text] = @0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -128,7 +145,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_Wildcard() { - var sql = new Sql("SELECT *").From().Where(x => x.Text.StartsWith("D")); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Text.StartsWith("D"), sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[text]) LIKE upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -138,7 +157,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_Single_Constant() { - var sql = new Sql("SELECT *").From().Where(x => x.NodeId == 2); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.NodeId == 2, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (([umbracoNode].[id] = @0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -148,7 +169,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_And_Constant() { - var sql = new Sql("SELECT *").From().Where(x => x.NodeId != 2 && x.NodeId != 3); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.NodeId != 2 && x.NodeId != 3, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ((([umbracoNode].[id] <> @0) AND ([umbracoNode].[id] <> @1)))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -159,7 +182,9 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_Or_Constant() { - var sql = new Sql("SELECT *").From().Where(x => x.Text == "hello" || x.NodeId == 3); + var sql = new Sql("SELECT *") + .From(sqlSyntax) + .Where(x => x.Text == "hello" || x.NodeId == 3, sqlSyntax); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ((([umbracoNode].[text] = @0) OR ([umbracoNode].[id] = @1)))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -174,7 +199,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]"); var sql = new Sql(); - sql.Select("*").From(); + sql.Select("*").From(sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -191,9 +216,9 @@ namespace Umbraco.Tests.Persistence.Querying .On("[cmsDocument].[versionId] = [cmsContentVersion].[VersionId]"); var sql = new Sql(); - sql.Select("*").From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId); + sql.Select("*").From(sqlSyntax) + .InnerJoin(sqlSyntax) + .On(sqlSyntax, left => left.VersionId, right => right.VersionId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -207,7 +232,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]").OrderBy("([cmsContent].[contentType])"); var sql = new Sql(); - sql.Select("*").From().OrderBy(x => x.ContentTypeId); + sql.Select("*").From(sqlSyntax).OrderBy(x => x.ContentTypeId, sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -221,7 +246,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]").GroupBy("[contentType]"); var sql = new Sql(); - sql.Select("*").From().GroupBy(x => x.ContentTypeId); + sql.Select("*").From(sqlSyntax).GroupBy(x => x.ContentTypeId, sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -235,7 +260,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]").Where("([cmsContent].[nodeId] = @0)", 1045); var sql = new Sql(); - sql.Select("*").From().Where(x => x.NodeId == 1045); + sql.Select("*").From(sqlSyntax).Where(x => x.NodeId == 1045, sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -253,9 +278,9 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .Where(x => x.NodeId == 1045) - .Where(x => x.ContentTypeId == 1050); + .From(sqlSyntax) + .Where(x => x.NodeId == 1045, sqlSyntax) + .Where(x => x.ContentTypeId == 1050, sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -270,8 +295,8 @@ namespace Umbraco.Tests.Persistence.Querying .From("[cmsContent]"); var sql = new Sql(); - sql.Select() - .From(); + sql.Select(sqlSyntax) + .From(sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -286,8 +311,8 @@ namespace Umbraco.Tests.Persistence.Querying .From("[cmsContent]"); var sql = new Sql(); - sql.Select(c => c.NodeId) - .From(); + sql.Select(sqlSyntax, c => c.NodeId) + .From(sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -302,8 +327,8 @@ namespace Umbraco.Tests.Persistence.Querying .From("[cmsContent]"); var sql = new Sql(); - sql.Select(c => c.NodeId, c => c.ContentTypeId, c => c.PrimaryKey) - .From(); + sql.Select(sqlSyntax, c => c.NodeId, c => c.ContentTypeId, c => c.PrimaryKey) + .From(sqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -320,11 +345,11 @@ namespace Umbraco.Tests.Persistence.Querying .On("[cmsDocument].[versionId] = [cmsContentVersion].[VersionId]"); var sql = new Sql(); - sql.Select(d => d.NodeId, d => d.Published) - .AndSelect(cv => cv.Id) - .From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId); + sql.Select(sqlSyntax, d => d.NodeId, d => d.Published) + .AndSelect(sqlSyntax, cv => cv.Id) + .From(sqlSyntax) + .InnerJoin(sqlSyntax) + .On(sqlSyntax, left => left.VersionId, right => right.VersionId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); diff --git a/src/Umbraco.Web.UI.Client/vwd.webinfo b/src/Umbraco.Web.UI.Client/vwd.webinfo deleted file mode 100644 index 44d783b1df..0000000000 --- a/src/Umbraco.Web.UI.Client/vwd.webinfo +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - \ No newline at end of file