From b589aabaa318b7a7028deac0aa18fb0f1a164eaa Mon Sep 17 00:00:00 2001 From: "grzegorz.russek" Date: Tue, 4 Jun 2013 17:44:51 +0000 Subject: [PATCH] Polishing --- DynamORM.Tests/DynamORM.Tests.csproj | 4 +- DynamORM.Tests/Helpers/AttachToDebugger.cs | 8 +-- DynamORM.Tests/Helpers/Users.cs | 2 +- DynamORM.Tests/Helpers/UsersBareBoneClass.cs | 2 +- .../Modify/DynamicModificationTests.cs | 60 +++++++++---------- DynamORM.Tests/Select/TypedAccessTests.cs | 6 +- DynamORM.Tests/TestsBase.cs | 2 +- DynamORM/Builders/DynamicQueryBuilder.cs | 19 +++--- DynamORM/DynamicColumn.cs | 31 ++++++++-- DynamORM/DynamicConnection.cs | 8 ++- DynamORM/DynamicExtensions.cs | 6 +- 11 files changed, 89 insertions(+), 59 deletions(-) diff --git a/DynamORM.Tests/DynamORM.Tests.csproj b/DynamORM.Tests/DynamORM.Tests.csproj index cb4aeca..fab432e 100644 --- a/DynamORM.Tests/DynamORM.Tests.csproj +++ b/DynamORM.Tests/DynamORM.Tests.csproj @@ -33,7 +33,9 @@ - + + C:\Program Files (x86)\NUnit 2.6.2\bin\nunit.framework.dll + diff --git a/DynamORM.Tests/Helpers/AttachToDebugger.cs b/DynamORM.Tests/Helpers/AttachToDebugger.cs index 18ede23..d920611 100644 --- a/DynamORM.Tests/Helpers/AttachToDebugger.cs +++ b/DynamORM.Tests/Helpers/AttachToDebugger.cs @@ -45,7 +45,7 @@ namespace DynamORM.Tests.Helpers Debugger.Launch(); } - /// Test anonymous type compatybility. + /// Test anonymous type compatibility. [Test] public void TestAnonType() { @@ -59,14 +59,14 @@ namespace DynamORM.Tests.Helpers [Test] public void TestAnonTypeValue() { - var a = new { x = 1, y = "bla bla" }; + var a = new { x = 1, y = "bla bla" }; var b = new { x = 1, y = "bla bla" }; Assert.AreEqual(a, b); Assert.IsTrue(a.Equals(b)); - + Dictionary dict = new Dictionary() { { a, 999 } }; - + Assert.IsTrue(dict.ContainsKey(b)); } } diff --git a/DynamORM.Tests/Helpers/Users.cs b/DynamORM.Tests/Helpers/Users.cs index fe47a5c..c29917c 100644 --- a/DynamORM.Tests/Helpers/Users.cs +++ b/DynamORM.Tests/Helpers/Users.cs @@ -46,7 +46,7 @@ namespace DynamORM.Tests.Helpers [Column("login")] public string Login { get; set; } - /// Gets or sets first columnvalue. + /// Gets or sets first column value. [Column("first")] public string First { get; set; } diff --git a/DynamORM.Tests/Helpers/UsersBareBoneClass.cs b/DynamORM.Tests/Helpers/UsersBareBoneClass.cs index 7879bfb..82ee275 100644 --- a/DynamORM.Tests/Helpers/UsersBareBoneClass.cs +++ b/DynamORM.Tests/Helpers/UsersBareBoneClass.cs @@ -45,7 +45,7 @@ namespace DynamORM.Tests.Helpers /// Gets or sets login column value. public string login { get; set; } - /// Gets or sets first columnvalue. + /// Gets or sets first column value. public string first { get; set; } /// Gets or sets last column value. diff --git a/DynamORM.Tests/Modify/DynamicModificationTests.cs b/DynamORM.Tests/Modify/DynamicModificationTests.cs index 9411d95..b5ecbd2 100644 --- a/DynamORM.Tests/Modify/DynamicModificationTests.cs +++ b/DynamORM.Tests/Modify/DynamicModificationTests.cs @@ -65,12 +65,12 @@ namespace DynamORM.Tests.Modify [Test] public void TestInsertByArguments() { - Assert.AreEqual(1, GetTestTable().Insert(code: 201, first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla")); + Assert.AreEqual(1, GetTestTable().Insert(code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla")); // Verify - var o = GetTestTable().Single(code: 201); + var o = GetTestTable().Single(code: "201"); Assert.Less(200, o.id); - Assert.AreEqual("201", o.code); + Assert.AreEqual("201", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -82,12 +82,12 @@ namespace DynamORM.Tests.Modify [Test] public void TestInsertByDynamicObjects() { - Assert.AreEqual(1, GetTestTable().Insert(values: new { code = 202, first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" })); + Assert.AreEqual(1, GetTestTable().Insert(values: new { code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" })); // Verify - var o = GetTestTable().Single(code: 202); + var o = GetTestTable().Single(code: "202"); Assert.Less(200, o.id); - Assert.AreEqual("202", o.code); + Assert.AreEqual("202", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -112,9 +112,9 @@ namespace DynamORM.Tests.Modify })); // Verify - var o = u.Single(code: 203); + var o = u.Single(code: "203"); Assert.Less(200, o.id); - Assert.AreEqual("203", o.code); + Assert.AreEqual("203", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -139,9 +139,9 @@ namespace DynamORM.Tests.Modify })); // Verify - var o = u.Single(code: 204); + var o = u.Single(code: "204"); Assert.Less(200, o.id); - Assert.AreEqual("204", o.code); + Assert.AreEqual("204", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -157,12 +157,12 @@ namespace DynamORM.Tests.Modify [Test] public void TestUpdateByArguments() { - Assert.AreEqual(1, GetTestTable().Update(id: 1, code: 201, first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla")); + Assert.AreEqual(1, GetTestTable().Update(id: 1, code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla")); // Verify - var o = GetTestTable().Single(code: 201); + var o = GetTestTable().Single(code: "201"); Assert.AreEqual(1, o.id); - Assert.AreEqual("201", o.code); + Assert.AreEqual("201", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -174,12 +174,12 @@ namespace DynamORM.Tests.Modify [Test] public void TestUpdateByDynamicObject() { - Assert.AreEqual(1, GetTestTable().Update(update: new { id = 2, code = 202, first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" })); + Assert.AreEqual(1, GetTestTable().Update(update: new { id = 2, code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" })); // Verify - var o = GetTestTable().Single(code: 202); + var o = GetTestTable().Single(code: "202"); Assert.AreEqual(2, o.id); - Assert.AreEqual("202", o.code); + Assert.AreEqual("202", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -204,9 +204,9 @@ namespace DynamORM.Tests.Modify })); // Verify - var o = u.Single(code: 203); + var o = u.Single(code: "203"); Assert.AreEqual(3, o.id); - Assert.AreEqual("203", o.code); + Assert.AreEqual("203", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -231,9 +231,9 @@ namespace DynamORM.Tests.Modify })); // Verify - var o = u.Single(code: 204); + var o = u.Single(code: "204"); Assert.AreEqual(4, o.id); - Assert.AreEqual("204", o.code); + Assert.AreEqual("204", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -245,12 +245,12 @@ namespace DynamORM.Tests.Modify [Test] public void TestUpdateByDynamicObjects() { - Assert.AreEqual(1, GetTestTable().Update(values: new { code = 205, first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }, where: new { id = 5 })); + Assert.AreEqual(1, GetTestTable().Update(values: new { code = "205", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }, where: new { id = 5 })); // Verify - var o = GetTestTable().Single(code: 205); + var o = GetTestTable().Single(code: "205"); Assert.AreEqual(5, o.id); - Assert.AreEqual("205", o.code); + Assert.AreEqual("205", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -275,9 +275,9 @@ namespace DynamORM.Tests.Modify }, id: 6)); // Verify - var o = u.Single(code: 206); + var o = u.Single(code: "206"); Assert.AreEqual(6, o.id); - Assert.AreEqual("206", o.code); + Assert.AreEqual("206", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -302,9 +302,9 @@ namespace DynamORM.Tests.Modify }, id: 7)); // Verify - var o = u.Single(code: 207); + var o = u.Single(code: "207"); Assert.AreEqual(7, o.id); - Assert.AreEqual("207", o.code); + Assert.AreEqual("207", o.code.ToString()); Assert.AreEqual(null, o.first); Assert.AreEqual("Gagarin", o.last); Assert.AreEqual("juri.gagarin@megacorp.com", o.email); @@ -320,10 +320,10 @@ namespace DynamORM.Tests.Modify [Test] public void TestDeleteByArguments() { - Assert.AreEqual(1, GetTestTable().Delete(code: 10)); + Assert.AreEqual(1, GetTestTable().Delete(code: "10")); // Verify - Assert.AreEqual(0, GetTestTable().Count(code: 10)); + Assert.AreEqual(0, GetTestTable().Count(code: "10")); } /// Test row deleting by dynamic objects (all except ID should be ignored). @@ -380,7 +380,7 @@ namespace DynamORM.Tests.Modify [Test] public void TestDeleteyDynamicObjectWhere() { - Assert.AreEqual(1, GetTestTable().Delete(where: new { id = 14, code = 14 })); + Assert.AreEqual(1, GetTestTable().Delete(where: new { id = 14, code = "14" })); // Verify Assert.AreEqual(0, GetTestTable().Count(id: 14)); diff --git a/DynamORM.Tests/Select/TypedAccessTests.cs b/DynamORM.Tests/Select/TypedAccessTests.cs index 81e13cd..77afe5d 100644 --- a/DynamORM.Tests/Select/TypedAccessTests.cs +++ b/DynamORM.Tests/Select/TypedAccessTests.cs @@ -358,7 +358,7 @@ namespace DynamORM.Tests.Select Assert.AreEqual(200, GetTestTable().Count(columns: "id")); } - /// Test count with in steatement. + /// Test count with in statement. [Test] public virtual void TestGenericSelectInEnumerableCount() { @@ -369,7 +369,7 @@ namespace DynamORM.Tests.Select })); } - /// Test count with in steatement. + /// Test count with in statement. [Test] public virtual void TestGenericSelectInArrayCount() { @@ -585,7 +585,7 @@ namespace DynamORM.Tests.Select Assert.AreEqual(26, GetTestTable().Count(where: new DynamicColumn("id").Between(75, 100))); } - /// Test generic where expression in params. + /// Test generic where expression in parameters. [Test] public virtual void TestGenericWhereIn1() { diff --git a/DynamORM.Tests/TestsBase.cs b/DynamORM.Tests/TestsBase.cs index 414a581..e08719a 100644 --- a/DynamORM.Tests/TestsBase.cs +++ b/DynamORM.Tests/TestsBase.cs @@ -86,7 +86,7 @@ namespace DynamORM.Tests #region DynamORM Initialization - /// Create with default otions for SQLite. + /// Create with default options for SQLite. public void CreateDynamicDatabase() { CreateDynamicDatabase( diff --git a/DynamORM/Builders/DynamicQueryBuilder.cs b/DynamORM/Builders/DynamicQueryBuilder.cs index b701ddf..3aaac30 100644 --- a/DynamORM/Builders/DynamicQueryBuilder.cs +++ b/DynamORM/Builders/DynamicQueryBuilder.cs @@ -95,7 +95,7 @@ namespace DynamORM.Builders /// Builder instance. public virtual T Table() { - return Table(typeof(T)); + return Table(typeof(Y)); } /// Set table name. @@ -201,11 +201,12 @@ namespace DynamORM.Builders { col = Schema.TryGetNullable(colName.ToLower()); - if (!col.HasValue) - throw new InvalidOperationException(string.Format("Column '{0}' not found in schema, can't use universal approach.", con.Key)); + if (!col.HasValue || !col.Value.IsKey) + continue; + /*throw new InvalidOperationException(string.Format("Column '{0}' not found in schema, can't use universal approach.", condition.Key)); if (!col.Value.IsKey) - continue; + continue;*/ colName = col.Value.Name; } @@ -271,7 +272,7 @@ namespace DynamORM.Builders else throw new InvalidOperationException("NULL can only be compared by IS or IS NOT operator."); - #endregion + #endregion Null operators } else if (v.Operator != DynamicColumn.CompareOperator.In && v.Operator != DynamicColumn.CompareOperator.Between) @@ -293,7 +294,7 @@ namespace DynamORM.Builders command.AddParameter(this, v); - #endregion + #endregion Standard operators } else if (((object)v.Value).GetType().IsCollection() || v.Value is IEnumerable) { @@ -336,7 +337,7 @@ namespace DynamORM.Builders else throw new InvalidOperationException("BETWEEN must have two values."); - #endregion + #endregion Between operator } else if (v.Operator == DynamicColumn.CompareOperator.In) { @@ -376,12 +377,12 @@ namespace DynamORM.Builders if (v.EndBlock) sb.Append(")"); - #endregion + #endregion In operator } else throw new Exception("BAZINGA. You have reached unreachable code."); - #endregion + #endregion In or Between operator } else throw new InvalidOperationException( diff --git a/DynamORM/DynamicColumn.cs b/DynamORM/DynamicColumn.cs index 854122c..885b0a8 100644 --- a/DynamORM/DynamicColumn.cs +++ b/DynamORM/DynamicColumn.cs @@ -86,7 +86,9 @@ namespace DynamORM #region Constructors /// Initializes a new instance of the class. - public DynamicColumn() { } + public DynamicColumn() + { + } /// Initializes a new instance of the class. /// Constructor provided for easier object creation in queries. @@ -341,7 +343,7 @@ namespace DynamORM /// Sets the begin block flag. /// If set to true [begin]. /// Returns self. - public DynamicColumn SetBeginBlock(bool begin) + public DynamicColumn SetBeginBlock(bool begin = true) { BeginBlock = begin; return this; @@ -350,7 +352,7 @@ namespace DynamORM /// Sets the end block flag. /// If set to true [end]. /// Returns self. - public DynamicColumn SetEndBlock(bool end) + public DynamicColumn SetEndBlock(bool end = true) { EndBlock = end; return this; @@ -359,7 +361,7 @@ namespace DynamORM /// Sets the or flag. /// If set to true [or]. /// Returns self. - public DynamicColumn SetOr(bool or) + public DynamicColumn SetOr(bool or = true) { Or = or; return this; @@ -436,6 +438,13 @@ namespace DynamORM #region ToSQL + internal string ToSQLSelectColumn(DynamicDatabase db) + { + StringBuilder sb = new StringBuilder(); + ToSQLSelectColumn(db, sb); + return sb.ToString(); + } + internal void ToSQLSelectColumn(DynamicDatabase db, StringBuilder sb) { string column = ColumnName == "*" ? "*" : ColumnName; @@ -462,11 +471,25 @@ namespace DynamORM sb.AppendFormat(" AS {0}", alias); } + internal string ToSQLGroupByColumn(DynamicDatabase db) + { + StringBuilder sb = new StringBuilder(); + ToSQLGroupByColumn(db, sb); + return sb.ToString(); + } + internal void ToSQLGroupByColumn(DynamicDatabase db, StringBuilder sb) { sb.Append(db.DecorateName(ColumnName)); } + internal string ToSQLOrderByColumn(DynamicDatabase db) + { + StringBuilder sb = new StringBuilder(); + ToSQLOrderByColumn(db, sb); + return sb.ToString(); + } + internal void ToSQLOrderByColumn(DynamicDatabase db, StringBuilder sb) { if (!string.IsNullOrEmpty(Alias)) diff --git a/DynamORM/DynamicConnection.cs b/DynamORM/DynamicConnection.cs index e7aba2e..8285b9b 100644 --- a/DynamORM/DynamicConnection.cs +++ b/DynamORM/DynamicConnection.cs @@ -101,7 +101,9 @@ namespace DynamORM /// Connection object. /// Does nothing. handles /// opening connections. - public void Open() { } + public void Open() + { + } /// Closes the connection to the database. /// Does nothing. handles @@ -109,7 +111,9 @@ namespace DynamORM /// It will close if this is multi connection configuration, otherwise /// it will stay open until is not /// disposed. - public void Close() { } + public void Close() + { + } /// Gets or sets the string used to open a database. /// Changing connection string operation is not supported in DynamORM. diff --git a/DynamORM/DynamicExtensions.cs b/DynamORM/DynamicExtensions.cs index c072fc0..f398386 100644 --- a/DynamORM/DynamicExtensions.cs +++ b/DynamORM/DynamicExtensions.cs @@ -1094,7 +1094,7 @@ namespace DynamORM /// Type to parse to. /// Value to parse. /// Handler of a try parse method. - /// Returns true if conversion was sucessfull. + /// Returns true if conversion was successful. public static T? TryParse(this string value, TryParseHandler handler) where T : struct { if (String.IsNullOrEmpty(value)) @@ -1113,7 +1113,7 @@ namespace DynamORM /// Value to parse. /// Default value of a result. /// Handler of a try parse method. - /// Returns true if conversion was sucessfull. + /// Returns true if conversion was successful. public static T TryParseDefault(this string value, T defaultValue, TryParseHandler handler) { if (String.IsNullOrEmpty(value)) @@ -1131,7 +1131,7 @@ namespace DynamORM /// Type which implements this function. /// Value to parse. /// Resulting value. - /// Returns true if conversion was sucessfull. + /// Returns true if conversion was successful. public delegate bool TryParseHandler(string value, out T result); #endregion TryParse extensions