From 6effc97f97784a343c8698e2fbcc041df32763a7 Mon Sep 17 00:00:00 2001 From: Jeroen Weelink Date: Thu, 25 Jul 2019 10:35:08 +0200 Subject: [PATCH] Remove PersistenceModel since it doesn't add any benefit at the moment --- src/FluentSQL.Tests/Api/ApiDesign.cs | 24 ++++++++----- .../Parser/FromQueryParserTests.cs | 11 ++++-- .../Compilation/Parser/QueryParserTests.cs | 8 ++--- .../Parser/UnionAllQueryParserTests.cs | 7 ++-- .../Parser/UnionQueryParserTests.cs | 7 ++-- .../Examples/Builders/ExampleModelBuilder.cs | 23 ++----------- src/FluentSQL.Tests/Examples/ExampleModel.cs | 12 ++----- .../Querying/QueryComponentTests.cs | 6 +++- .../Compilation/Parser/QueryParser.cs | 2 -- src/FluentSQL/Databases/Database.cs | 10 ++++++ src/FluentSQL/Modelling/PersistenceModel.cs | 34 ------------------- src/FluentSQL/Querying/QueryContext.cs | 12 +++---- src/FluentSQL/Querying/Statements/Union.cs | 2 +- src/FluentSQL/Querying/Statements/UnionAll.cs | 2 +- 14 files changed, 62 insertions(+), 98 deletions(-) delete mode 100644 src/FluentSQL/Modelling/PersistenceModel.cs diff --git a/src/FluentSQL.Tests/Api/ApiDesign.cs b/src/FluentSQL.Tests/Api/ApiDesign.cs index a2c1224..32fa45a 100644 --- a/src/FluentSQL.Tests/Api/ApiDesign.cs +++ b/src/FluentSQL.Tests/Api/ApiDesign.cs @@ -1,12 +1,14 @@ using System.Data; using System.Threading.Tasks; -using FluentSQL.Databases.SqlServer; +using FluentSQL.Databases; using FluentSQL.Extensions; using FluentSQL.Querying.Extensions; using FluentSQL.Querying.Functions.Extensions; using FluentSQL.Querying.Statements.Extensions; +using FluentSQL.Tests.Databases.Builders; using FluentSQL.Tests.Examples; +using FluentSQL.Tests.Examples.Builders; namespace FluentSQL.Tests.Api { @@ -16,7 +18,8 @@ public sealed class ApiDesign public async Task TestApi() { - var model = new ExampleModel(new SqlServerDatabase()); + Database database = new DatabaseBuilder().Build(); + ExampleModel model = new ExampleModelBuilder().Build(); Customers c = model.Customers; Invoices i = model.Invoices; InvoiceLines l = model.InvoiceLines; @@ -29,7 +32,7 @@ public async Task TestApi() * WHERE dbo.customers.id > 0 */ Query parameterless = - model + database .Query() .From(() => model.Customers) .Where(() => model.Customers.Id > 0) @@ -44,7 +47,8 @@ public async Task TestApi() * WHERE i2.invoice_number = i.invoice_number */ Query subquery = - model.Query().WithParameters() + database + .Query().WithParameters() .From(() => i2) .Where(p => i2.InvoiceNumber == i.InvoiceNumber) .Select(() => i2.InvoiceNumber).As(r => r.InvoiceIdFromSubquery) @@ -73,7 +77,8 @@ public async Task TestApi() * ORDER BY c.name DESC */ Query parameterized = - model.Query().WithParameters() + database + .Query().WithParameters() .From(() => c) .InnerJoin(() => i).On(() => i.CustomerId == c.Id) .LeftJoin(() => subquery).On(x => x.InvoiceIdFromSubquery == i.Id) @@ -122,25 +127,26 @@ public async Task TestApi() * FROM dbo.customers */ Query unionQuery = - model.Query().WithParameters() + database + .Query().WithParameters() .From(() => c) .InnerJoin(() => i).On(() => i.CustomerId == c.Id) .InnerJoin(() => l).On(() => l.InvoiceId == i.Id) .Select(() => c.Name).As(result => result.CustomerName) .Select(() => l.Price.Sum()).As(result => result.TotalAmount) .Where(p => c.Id > p.Limit) - .UnionAll(model.Query() + .UnionAll(database.Query() .From(() => c) .Select(() => c.Name).As(result => result.CustomerName) .Select(() => 1).As(result => result.TotalAmount) ) - .Union(model.Query() + .Union(database.Query() .WithParameters() .From(() => model.Customers) .Select(() => "dummy") .Select(() => 1) ) - .Union(model.Query() + .Union(database.Query() .From(() => model.Customers) .Select(() => "other_dummy").As(result => result.CustomerName) .Select(() => model.Customers.Id) diff --git a/src/FluentSQL.Tests/Compilation/Parser/FromQueryParserTests.cs b/src/FluentSQL.Tests/Compilation/Parser/FromQueryParserTests.cs index 45b9aa3..ab44a18 100644 --- a/src/FluentSQL.Tests/Compilation/Parser/FromQueryParserTests.cs +++ b/src/FluentSQL.Tests/Compilation/Parser/FromQueryParserTests.cs @@ -4,11 +4,13 @@ using FluentSQL.Compilation.Parser; using FluentSQL.Compilation.Parser.Nodes; +using FluentSQL.Databases; using FluentSQL.Querying; using FluentSQL.Querying.Statements.Extensions; using FluentSQL.Tests.Builders; using FluentSQL.Tests.Compilation.Parser.Builders; using FluentSQL.Tests.Compilation.Parser.Extensions; +using FluentSQL.Tests.Databases.Builders; using FluentSQL.Tests.Examples; using FluentSQL.Tests.Examples.Builders; @@ -22,10 +24,11 @@ public class When_parsing_without_an_alias : Specification { protected override QueryParser EstablishContext() { + Database database = new DatabaseBuilder().Build(); ExampleModel model = new ExampleModelBuilder().Build(); QueryContext = - model.Query() + database.Query() .From(() => model.Customers) .QueryContext; @@ -57,11 +60,13 @@ public class When_parsing_with_an_alias : Specification { protected override QueryParser EstablishContext() { - Alias = new RandomStringBuilder().ThatStartsWithLetter.Build(); + Database database = new DatabaseBuilder().Build(); ExampleModel model = new ExampleModelBuilder().Build(); + + Alias = new RandomStringBuilder().ThatStartsWithLetter.Build(); QueryContext = - model.Query() + database.Query() .From(() => model.Customers).As(Alias) .QueryContext; diff --git a/src/FluentSQL.Tests/Compilation/Parser/QueryParserTests.cs b/src/FluentSQL.Tests/Compilation/Parser/QueryParserTests.cs index 41c58c2..9acea15 100644 --- a/src/FluentSQL.Tests/Compilation/Parser/QueryParserTests.cs +++ b/src/FluentSQL.Tests/Compilation/Parser/QueryParserTests.cs @@ -1,10 +1,10 @@ using FluentSQL.Compilation.Parser; using FluentSQL.Compilation.Parser.Nodes; +using FluentSQL.Databases; using FluentSQL.Querying; using FluentSQL.Tests.Compilation.Parser.Builders; using FluentSQL.Tests.Compilation.Parser.Extensions; -using FluentSQL.Tests.Examples; -using FluentSQL.Tests.Examples.Builders; +using FluentSQL.Tests.Databases.Builders; using Xunit; @@ -16,8 +16,8 @@ public class When_parsing_an_empty_query : Specification { protected override QueryParser EstablishContext() { - ExampleModel model = new ExampleModelBuilder().Build(); - QueryContext = model.Query(); + Database database = new DatabaseBuilder().Build(); + QueryContext = database.Query(); return new QueryParserBuilder().Build(); } diff --git a/src/FluentSQL.Tests/Compilation/Parser/UnionAllQueryParserTests.cs b/src/FluentSQL.Tests/Compilation/Parser/UnionAllQueryParserTests.cs index 2422ca4..df4aa7e 100644 --- a/src/FluentSQL.Tests/Compilation/Parser/UnionAllQueryParserTests.cs +++ b/src/FluentSQL.Tests/Compilation/Parser/UnionAllQueryParserTests.cs @@ -2,11 +2,13 @@ using FluentSQL.Compilation.Parser; using FluentSQL.Compilation.Parser.Nodes; +using FluentSQL.Databases; using FluentSQL.Querying; using FluentSQL.Querying.Statements.Extensions; using FluentSQL.Tests.Builders; using FluentSQL.Tests.Compilation.Parser.Builders; using FluentSQL.Tests.Compilation.Parser.Extensions; +using FluentSQL.Tests.Databases.Builders; using FluentSQL.Tests.Examples; using FluentSQL.Tests.Examples.Builders; @@ -20,18 +22,19 @@ public class When_parsing : Specification { protected override QueryParser EstablishContext() { + Database database = new DatabaseBuilder().Build(); ExampleModel model = new ExampleModelBuilder().Build(); FirstAlias = new RandomStringBuilder().ThatStartsWithLetter.Build(); SecondAlias = new RandomStringBuilder().ThatStartsWithLetter.Build(); QueryComponent first = - model.Query() + database.Query() .From(() => model.Customers).As(FirstAlias) .Select(() => model.Customers.Name); QueryComponent second = - model.Query() + database.Query() .From(() => model.Invoices).As(SecondAlias) .Select(() => model.Invoices.InvoiceNumber); diff --git a/src/FluentSQL.Tests/Compilation/Parser/UnionQueryParserTests.cs b/src/FluentSQL.Tests/Compilation/Parser/UnionQueryParserTests.cs index 7afb7d6..da979ff 100644 --- a/src/FluentSQL.Tests/Compilation/Parser/UnionQueryParserTests.cs +++ b/src/FluentSQL.Tests/Compilation/Parser/UnionQueryParserTests.cs @@ -2,11 +2,13 @@ using FluentSQL.Compilation.Parser; using FluentSQL.Compilation.Parser.Nodes; +using FluentSQL.Databases; using FluentSQL.Querying; using FluentSQL.Querying.Statements.Extensions; using FluentSQL.Tests.Builders; using FluentSQL.Tests.Compilation.Parser.Builders; using FluentSQL.Tests.Compilation.Parser.Extensions; +using FluentSQL.Tests.Databases.Builders; using FluentSQL.Tests.Examples; using FluentSQL.Tests.Examples.Builders; @@ -20,18 +22,19 @@ public class When_parsing : Specification { protected override QueryParser EstablishContext() { + Database database = new DatabaseBuilder().Build(); ExampleModel model = new ExampleModelBuilder().Build(); FirstAlias = new RandomStringBuilder().ThatStartsWithLetter.Build(); SecondAlias = new RandomStringBuilder().ThatStartsWithLetter.Build(); QueryComponent first = - model.Query() + database.Query() .From(() => model.Customers).As(FirstAlias) .Select(() => model.Customers.Name); QueryComponent second = - model.Query() + database.Query() .From(() => model.Invoices).As(SecondAlias) .Select(() => model.Invoices.InvoiceNumber); diff --git a/src/FluentSQL.Tests/Examples/Builders/ExampleModelBuilder.cs b/src/FluentSQL.Tests/Examples/Builders/ExampleModelBuilder.cs index b66b73e..119596f 100644 --- a/src/FluentSQL.Tests/Examples/Builders/ExampleModelBuilder.cs +++ b/src/FluentSQL.Tests/Examples/Builders/ExampleModelBuilder.cs @@ -1,29 +1,10 @@ -using FluentSQL.Databases; -using FluentSQL.Tests.Databases.Builders; - -namespace FluentSQL.Tests.Examples.Builders +namespace FluentSQL.Tests.Examples.Builders { public class ExampleModelBuilder : TestDataBuilder { - private Database Database { get; set; } - - protected override void OnPreBuild() - { - if (Database == null) - { - WithDatabase(new DatabaseBuilder().Build()); - } - } - protected override ExampleModel OnBuild() { - return new ExampleModel(Database); - } - - public ExampleModelBuilder WithDatabase(Database database) - { - Database = database; - return this; + return new ExampleModel(); } } } diff --git a/src/FluentSQL.Tests/Examples/ExampleModel.cs b/src/FluentSQL.Tests/Examples/ExampleModel.cs index d913f06..8a75981 100644 --- a/src/FluentSQL.Tests/Examples/ExampleModel.cs +++ b/src/FluentSQL.Tests/Examples/ExampleModel.cs @@ -1,18 +1,10 @@ -using FluentSQL.Databases; -using FluentSQL.Modelling; - -namespace FluentSQL.Tests.Examples +namespace FluentSQL.Tests.Examples { - public class ExampleModel : PersistenceModel + public class ExampleModel { public readonly Customers Customers = new Customers(); public readonly InvoiceLines InvoiceLines = new InvoiceLines(); public readonly Invoices Invoices = new Invoices(); - - public ExampleModel(Database database) - : base(database) - { - } } } diff --git a/src/FluentSQL.Tests/Querying/QueryComponentTests.cs b/src/FluentSQL.Tests/Querying/QueryComponentTests.cs index 98fa3b9..1e048f8 100644 --- a/src/FluentSQL.Tests/Querying/QueryComponentTests.cs +++ b/src/FluentSQL.Tests/Querying/QueryComponentTests.cs @@ -1,8 +1,10 @@ using FluentAssertions; +using FluentSQL.Databases; using FluentSQL.Querying; using FluentSQL.Querying.Extensions; using FluentSQL.Querying.Statements.Extensions; +using FluentSQL.Tests.Databases.Builders; using FluentSQL.Tests.Examples; using FluentSQL.Tests.Examples.Builders; @@ -16,9 +18,11 @@ public class When_compiling_a_query : Specification EstablishContext() { + Database database = new DatabaseBuilder().Build(); ExampleModel model = new ExampleModelBuilder().Build(); + QueryComponent queryComponent = - model.Query() + database.Query() .From(() => model.Customers) .Select(() => model.Customers.Name); diff --git a/src/FluentSQL/Compilation/Parser/QueryParser.cs b/src/FluentSQL/Compilation/Parser/QueryParser.cs index 2284e9e..c093460 100644 --- a/src/FluentSQL/Compilation/Parser/QueryParser.cs +++ b/src/FluentSQL/Compilation/Parser/QueryParser.cs @@ -5,8 +5,6 @@ using FluentSQL.Querying; using FluentSQL.Querying.Statements; -#pragma warning disable 1591 - namespace FluentSQL.Compilation.Parser { public sealed class QueryParser diff --git a/src/FluentSQL/Databases/Database.cs b/src/FluentSQL/Databases/Database.cs index e599522..195bb3c 100644 --- a/src/FluentSQL/Databases/Database.cs +++ b/src/FluentSQL/Databases/Database.cs @@ -19,6 +19,16 @@ protected Database(QueryCompiler compiler) Compiler = compiler; } + /// + /// Query this database. + /// + /// The result type of the query. + /// A new . + public QueryContext Query() + { + return new QueryContext(this); + } + private QueryCompiler Compiler { get; } /// diff --git a/src/FluentSQL/Modelling/PersistenceModel.cs b/src/FluentSQL/Modelling/PersistenceModel.cs deleted file mode 100644 index 3cb5256..0000000 --- a/src/FluentSQL/Modelling/PersistenceModel.cs +++ /dev/null @@ -1,34 +0,0 @@ -using FluentSQL.Databases; -using FluentSQL.Querying; - -namespace FluentSQL.Modelling -{ - /// - /// Represents the model in the database. - /// - public abstract class PersistenceModel - { - /// - /// Create a new . - /// - /// - /// The database where this persistence model is located. - /// - protected PersistenceModel(Database database) - { - Database = database; - } - - private Database Database { get; } - - /// - /// Query this persistence model. - /// - /// The result type of the query. - /// A new . - public QueryContext Query() - { - return new QueryContext(Database, this); - } - } -} diff --git a/src/FluentSQL/Querying/QueryContext.cs b/src/FluentSQL/Querying/QueryContext.cs index d992833..276b231 100644 --- a/src/FluentSQL/Querying/QueryContext.cs +++ b/src/FluentSQL/Querying/QueryContext.cs @@ -2,7 +2,6 @@ using FluentSQL.Compilation.Parser; using FluentSQL.Databases; -using FluentSQL.Modelling; namespace FluentSQL.Querying { @@ -19,16 +18,13 @@ public class QueryContext /// Create a new . /// /// The for this query. - /// The where this query is executed for. - internal QueryContext(Database database, PersistenceModel model) + internal QueryContext(Database database) { Components = new List>(); Database = database; - Model = model; } internal Database Database { get; } - internal PersistenceModel Model { get; } internal IList> Components { get; } internal void Parse(QueryParser parser) @@ -46,8 +42,8 @@ internal void Parse(QueryParser parser) /// The result type of the query. public sealed class QueryContext : QueryContext { - internal QueryContext(Database database, PersistenceModel model) - : base(database, model) + internal QueryContext(Database database) + : base(database) { } @@ -60,7 +56,7 @@ internal QueryContext(Database database, PersistenceModel model) /// The parameterized version. public QueryContext WithParameters() { - return new QueryContext(Database, Model); + return new QueryContext(Database); } } } diff --git a/src/FluentSQL/Querying/Statements/Union.cs b/src/FluentSQL/Querying/Statements/Union.cs index f0c91c9..a1fb238 100644 --- a/src/FluentSQL/Querying/Statements/Union.cs +++ b/src/FluentSQL/Querying/Statements/Union.cs @@ -17,7 +17,7 @@ public sealed class Union : Q public Union( QueryComponent first, QueryComponent second) - : base(new QueryContext(first.QueryContext.Database, first.QueryContext.Model)) + : base(new QueryContext(first.QueryContext.Database)) { First = first; Second = second; diff --git a/src/FluentSQL/Querying/Statements/UnionAll.cs b/src/FluentSQL/Querying/Statements/UnionAll.cs index 6201dbd..187a50b 100644 --- a/src/FluentSQL/Querying/Statements/UnionAll.cs +++ b/src/FluentSQL/Querying/Statements/UnionAll.cs @@ -18,7 +18,7 @@ public sealed class UnionAll public UnionAll( QueryComponent first, QueryComponent second) - : base(new QueryContext(first.QueryContext.Database, first.QueryContext.Model)) + : base(new QueryContext(first.QueryContext.Database)) { First = first; Second = second;