public void SelectTestWithJoins(SupportedDatabaseTypes databaseTypes, bool useSchema, string schemaPrefixId, string expectedSql) { SqlAliasHelper.ClearAliases(); var addDictionary = new Dictionary <string, string> { { "database:schemaPrefix:Id", schemaPrefixId } }; using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes, addDictionary).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>(); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId()); var builder = dbConfig.CreateSqlBuilder(); var select = builder.Select(); var sqls = new List <string> { @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>() .InnerJoin <Entity, ChildEntity>() .LeftOuterJoin <ChildEntity, ChildChildEntity>() .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>() .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .InnerJoin <Entity, ChildEntity>() .LeftOuterJoin <ChildEntity, ChildChildEntity>() .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .InnerJoin <Entity, ChildEntity>() .LeftOuterJoin <ChildEntity, ChildChildEntity>() .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), }; foreach (var sql in sqls) { sql.Should().Be(expectedSql); } } }
public void SelectTestWithJoins_WithTableNameSet(SupportedDatabaseTypes databaseTypes, string schema, string schemaPrefixId, string expectedSql) { SqlAliasHelper.ClearAliases(); const string entityTableName = "EntityTable"; const string childTableName = "ChildEntityTable"; const string childChildTableName = "ChildChildEntityTable"; var dbConfig = SqlBuilderFactory.DbConfigSchemaTargets(schema, schemaPrefixId, databaseTypes); var useSchema = !string.IsNullOrEmpty(schema); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId() ?? string.Empty); var builder = dbConfig.SqlBuilder(); var select = builder.Select(); var sqls = new List <string> { @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>(entityTableName) .InnerJoin <Entity, ChildEntity>(fromTableName: entityTableName, toTableName: childTableName) .LeftOuterJoin <ChildEntity, ChildChildEntity>(fromTableName: childTableName, toTableName: childChildTableName) .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>(entityTableName) .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .InnerJoin <Entity, ChildEntity>(fromTableName: entityTableName, toTableName: childTableName) .LeftOuterJoin <ChildEntity, ChildChildEntity>(fromTableName: childTableName, toTableName: childChildTableName) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .InnerJoin <Entity, ChildEntity>(fromTableName: entityTableName, toTableName: childTableName) .LeftOuterJoin <ChildEntity, ChildChildEntity>(fromTableName: childTableName, toTableName: childChildTableName) .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), }; foreach (var sql in sqls) { sql.Should().Be(expectedSql); } }
private void SetTableName <T>(Action additionAction = null, string originalTableName = null, string tableAlias = null) { if (!string.IsNullOrEmpty(TableName)) { if (TableAlias.IsEmpty()) { TableAlias = SqlAliasHelper.GetAliasForType <T>(tableAlias, TableName); } additionAction?.Invoke(); return; } TableName = SqlBuilderHelper.GetTableName <T>(SchemaNamePrefix, originalTableName); TableAlias = SqlAliasHelper.GetAliasForType <T>(tableAlias, originalTableName); additionAction?.Invoke(); }
public void SelectWithIfStatementTest(bool ifStatementResult, string schemaPrefixId, string expectedSql) { SqlAliasHelper.ClearAliases(); var dbConfig = SqlBuilderFactory.DbConfigSchemaTargets(null, schemaPrefixId, SupportedDatabaseTypes.Postgres); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId() ?? string.Empty); var builder = dbConfig.SqlBuilder(); var sql = builder.Select() .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .WhereIf <Entity>(x => x.WV(item => item.Name, "Arild"), () => ifStatementResult) .Build(); sql.Should().Be(expectedSql); }
public void SelectWithIfStatementTest(bool ifStatementResult, string expectedSql) { SqlAliasHelper.ClearAliases(); using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider().CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>(); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId()); var builder = dbConfig.CreateSqlBuilder(); var sql = builder.Select() .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .WhereIf <Entity>(x => x.WV(item => item.Name, "Arild"), () => ifStatementResult) .Build(); sql.Should().Be(expectedSql); } }
public void SelectCountTestOneTableOnly(SupportedDatabaseTypes databaseTypes, string schema, string schemaPrefixId, string expectedSql) { SqlAliasHelper.ClearAliases(); var dbConfig = SqlBuilderFactory.DbConfigSchemaTargets(schema, schemaPrefixId, databaseTypes); var useSchema = !string.IsNullOrEmpty(schema); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId() ?? string.Empty); var builder = dbConfig.SqlBuilder(); var select = builder.Select(); var sqls = new List <string> { select .Count() .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), select .Count() .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>() .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build() }; foreach (var sql in sqls) { sql.Should().Be(expectedSql); } }
private string GetTypeAlias <T>(string tableAlias, string tableName = null) { return(SqlAliasHelper.GetAliasForType <T>(tableAlias, tableName)); }