Skip to content

Commit c202922

Browse files
Merge pull request #689 from roddone/multiline-expanded-select
Allow expanded select to be multiline
2 parents fcf64ad + 713a973 commit c202922

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

QueryBuilder.Tests/SelectTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,20 @@ public void ExpandedSelect()
7474
Assert.Equal("SELECT `users`.`id`, `users`.`name`, `users`.`age` FROM `users`", c[EngineCodes.MySql]);
7575
}
7676

77+
[Fact]
78+
public void ExpandedSelectMultiline()
79+
{
80+
var q = new Query().From("users").Select(@"users.{
81+
id,
82+
name as Name,
83+
age
84+
}");
85+
var c = Compile(q);
86+
87+
Assert.Equal("SELECT [users].[id], [users].[name] AS [Name], [users].[age] FROM [users]", c[EngineCodes.SqlServer]);
88+
Assert.Equal("SELECT `users`.`id`, `users`.`name` AS `Name`, `users`.`age` FROM `users`", c[EngineCodes.MySql]);
89+
}
90+
7791
[Fact]
7892
public void ExpandedSelectWithSchema()
7993
{
@@ -83,6 +97,19 @@ public void ExpandedSelectWithSchema()
8397
Assert.Equal("SELECT [dbo].[users].[id], [dbo].[users].[name], [dbo].[users].[age] FROM [users]", c[EngineCodes.SqlServer]);
8498
}
8599

100+
[Fact]
101+
public void ExpandedSelectMultilineWithSchema()
102+
{
103+
var q = new Query().From("users").Select(@"dbo.users.{
104+
id,
105+
name as Name,
106+
age
107+
}");
108+
var c = Compile(q);
109+
110+
Assert.Equal("SELECT [dbo].[users].[id], [dbo].[users].[name] AS [Name], [dbo].[users].[age] FROM [users]", c[EngineCodes.SqlServer]);
111+
}
112+
86113
[Fact]
87114
public void NestedEmptyWhereAtFirstCondition()
88115
{

QueryBuilder/Helper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ public static int EnumerableCount(IEnumerable obj)
136136

137137
public static List<string> ExpandExpression(string expression)
138138
{
139-
var regex = @"^(?:\w+\.){1,2}{(.*)}";
140-
var match = Regex.Match(expression, regex);
139+
var regex = @"^(?:\w+\.){1,2}{([^}]*)}";
140+
var match = Regex.Match(expression, regex, RegexOptions.Multiline);
141141

142142
if (!match.Success)
143143
{
@@ -149,7 +149,7 @@ public static List<string> ExpandExpression(string expression)
149149

150150
var captures = match.Groups[1].Value;
151151

152-
var cols = Regex.Split(captures, @"\s*,\s*")
152+
var cols = Regex.Split(captures, @"\s*,\s*", RegexOptions.Multiline)
153153
.Select(x => $"{table}.{x.Trim()}")
154154
.ToList();
155155

0 commit comments

Comments
 (0)