Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit a3cb16d

Browse files
committed
Remove SelectList from public API, return naked SelectItem[] instead
1 parent eeef521 commit a3cb16d

File tree

5 files changed

+86
-55
lines changed

5 files changed

+86
-55
lines changed

src/ServiceStack.OrmLite.PostgreSQL/PostgreSQLDialectProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ public override string GetColumnDefinition(
128128
//Convert xmin into an integer so it can be used in comparisons
129129
public const string RowVersionFieldComparer = "int8in(xidout(xmin))";
130130

131-
public override SelectListItem GetRowVersionColumnName(FieldDefinition field)
131+
public override SelectItem GetRowVersionColumnName(FieldDefinition field)
132132
{
133-
return new SelectListExpression(this, "xmin", field.FieldName);
133+
return new SelectItemExpression(this, "xmin", field.FieldName);
134134
}
135135

136136
public override void AppendFieldCondition(StringBuilder sqlFilter, FieldDefinition fieldDef, IDbCommand cmd)

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 60 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,14 +1472,16 @@ private object SetAnonTypePropertyNamesForSelectExpression(object expr, Expressi
14721472

14731473
MemberExpression propertyExpr;
14741474
if ((propertyExpr = arg as MemberExpression) != null && propertyExpr.Member.Name != member.Name)
1475-
return new SelectListExpression(DialectProvider, expr.ToString(), member.Name);
1475+
return new SelectItemExpression(DialectProvider, expr.ToString(), member.Name);
14761476

14771477
// When selecting an entire table use the anon type property name as a prefix for the returned column name
14781478
// to allow the caller to distinguish properties with the same names from different tables
14791479

1480-
ParameterExpression paramExpr;
1481-
SelectList selectList;
1482-
if ((paramExpr = arg as ParameterExpression) != null && paramExpr.Name != member.Name && (selectList = expr as SelectList) != null)
1480+
var paramExpr = arg as ParameterExpression;
1481+
var selectList = paramExpr != null && paramExpr.Name != member.Name
1482+
? expr as SelectList
1483+
: null;
1484+
if (selectList != null)
14831485
{
14841486
foreach (var item in selectList.Items)
14851487
{
@@ -1489,7 +1491,7 @@ private object SetAnonTypePropertyNamesForSelectExpression(object expr, Expressi
14891491
}
14901492
else
14911493
{
1492-
var columnItem = item as SelectListColumn;
1494+
var columnItem = item as SelectItemColumn;
14931495
if (columnItem != null)
14941496
{
14951497
columnItem.Alias = member.Name + columnItem.ColumnName;
@@ -1501,11 +1503,26 @@ private object SetAnonTypePropertyNamesForSelectExpression(object expr, Expressi
15011503
return expr;
15021504
}
15031505

1506+
class SelectList
1507+
{
1508+
public readonly SelectItem[] Items;
1509+
1510+
public SelectList(SelectItem[] items)
1511+
{
1512+
this.Items = items;
1513+
}
1514+
1515+
public override string ToString()
1516+
{
1517+
return Items.ToSelectString();
1518+
}
1519+
}
1520+
15041521
protected virtual object VisitParameter(ParameterExpression p)
15051522
{
15061523
var paramModelDef = p.Type.GetModelDefinition();
15071524
if (paramModelDef != null)
1508-
return DialectProvider.GetColumnNames(paramModelDef, true);
1525+
return new SelectList(DialectProvider.GetColumnNames(paramModelDef, true));
15091526

15101527
return p.Name;
15111528
}
@@ -2103,9 +2120,9 @@ public EnumMemberAccess(string text, Type enumType)
21032120
public Type EnumType { get; private set; }
21042121
}
21052122

2106-
public abstract class SelectListItem
2123+
public abstract class SelectItem
21072124
{
2108-
protected SelectListItem(IOrmLiteDialectProvider dialectProvider, string alias)
2125+
protected SelectItem(IOrmLiteDialectProvider dialectProvider, string alias)
21092126
{
21102127
if (dialectProvider == null)
21112128
throw new ArgumentNullException("dialectProvider");
@@ -2124,9 +2141,9 @@ protected SelectListItem(IOrmLiteDialectProvider dialectProvider, string alias)
21242141
public abstract override string ToString();
21252142
}
21262143

2127-
public class SelectListExpression : SelectListItem
2144+
public class SelectItemExpression : SelectItem
21282145
{
2129-
public SelectListExpression(IOrmLiteDialectProvider dialectProvider, string selectExpression, string alias)
2146+
public SelectItemExpression(IOrmLiteDialectProvider dialectProvider, string selectExpression, string alias)
21302147
: base(dialectProvider, alias)
21312148
{
21322149
if (string.IsNullOrEmpty(selectExpression))
@@ -2149,9 +2166,9 @@ public override string ToString()
21492166
}
21502167
}
21512168

2152-
public class SelectListColumn : SelectListItem
2169+
public class SelectItemColumn : SelectItem
21532170
{
2154-
public SelectListColumn(IOrmLiteDialectProvider dialectProvider, string columnName, string columnAlias = null, string quotedTableAlias = null)
2171+
public SelectItemColumn(IOrmLiteDialectProvider dialectProvider, string columnName, string columnAlias = null, string quotedTableAlias = null)
21552172
: base(dialectProvider, columnAlias)
21562173
{
21572174
if (string.IsNullOrEmpty(columnName))
@@ -2183,37 +2200,37 @@ public override string ToString()
21832200
}
21842201
}
21852202

2186-
public class SelectList
2187-
{
2188-
public SelectList()
2189-
{
2190-
Items = new List<SelectListItem>();
2191-
}
2192-
2193-
public SelectList(ICollection<SelectListItem> items)
2194-
{
2195-
if (items == null)
2196-
throw new ArgumentNullException("items");
2197-
2198-
Items = new List<SelectListItem>(items);
2199-
}
2200-
2201-
public List<SelectListItem> Items { get; set; }
2202-
2203-
public override string ToString()
2204-
{
2205-
var sb = StringBuilderCache.Allocate();
2206-
2207-
foreach (var item in Items)
2208-
{
2209-
if (sb.Length > 0)
2210-
sb.Append(", ");
2211-
sb.Append(item);
2212-
}
2213-
2214-
return StringBuilderCache.ReturnAndFree(sb);
2215-
}
2216-
}
2203+
//public class SelectList
2204+
//{
2205+
// public SelectList()
2206+
// {
2207+
// Items = new List<SelectItem>();
2208+
// }
2209+
2210+
// public SelectList(ICollection<SelectItem> items)
2211+
// {
2212+
// if (items == null)
2213+
// throw new ArgumentNullException("items");
2214+
2215+
// Items = new List<SelectItem>(items);
2216+
// }
2217+
2218+
// public List<SelectItem> Items { get; set; }
2219+
2220+
// public override string ToString()
2221+
// {
2222+
// var sb = StringBuilderCache.Allocate();
2223+
2224+
// foreach (var item in Items)
2225+
// {
2226+
// if (sb.Length > 0)
2227+
// sb.Append(", ");
2228+
// sb.Append(item);
2229+
// }
2230+
2231+
// return StringBuilderCache.ReturnAndFree(sb);
2232+
// }
2233+
//}
22172234

22182235
public class OrmLiteDataParameter : IDbDataParameter
22192236
{

src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,10 @@ string ToSelectFromProcedureStatement(object fromObjWithProperties,
157157
bool DoesSequenceExist(IDbCommand dbCmd, string sequencName);
158158

159159
ulong FromDbRowVersion(object value);
160-
SelectListItem GetRowVersionColumnName(FieldDefinition field);
160+
SelectItem GetRowVersionColumnName(FieldDefinition field);
161161

162162
string GetColumnNames(ModelDefinition modelDef);
163-
SelectList GetColumnNames(ModelDefinition modelDef, bool tableQualified);
163+
SelectItem[] GetColumnNames(ModelDefinition modelDef, bool tableQualified);
164164

165165
SqlExpression<T> SqlExpression<T>();
166166

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -546,44 +546,44 @@ public virtual string ToSelectStatement(ModelDefinition modelDef,
546546
return StringBuilderCache.ReturnAndFree(sb);
547547
}
548548

549-
public virtual SelectListItem GetRowVersionColumnName(FieldDefinition field)
549+
public virtual SelectItem GetRowVersionColumnName(FieldDefinition field)
550550
{
551-
return new SelectListColumn(this, field.FieldName);
551+
return new SelectItemColumn(this, field.FieldName);
552552
}
553553

554554
public virtual string GetColumnNames(ModelDefinition modelDef)
555555
{
556-
return GetColumnNames(modelDef, false).ToString();
556+
return GetColumnNames(modelDef, false).ToSelectString();
557557
}
558558

559-
public virtual SelectList GetColumnNames(ModelDefinition modelDef, bool tableQualified)
559+
public virtual SelectItem[] GetColumnNames(ModelDefinition modelDef, bool tableQualified)
560560
{
561561
var tablePrefix = "";
562562
if (tableQualified)
563563
{
564564
tablePrefix = GetQuotedTableName(modelDef);
565565
}
566566

567-
var sqlColumns = new SelectListItem[modelDef.FieldDefinitions.Count];
567+
var sqlColumns = new SelectItem[modelDef.FieldDefinitions.Count];
568568
for (var i = 0; i < sqlColumns.Length; ++i)
569569
{
570570
var field = modelDef.FieldDefinitions[i];
571571

572572
if (field.CustomSelect != null)
573573
{
574-
sqlColumns[i] = new SelectListExpression(this, field.CustomSelect, field.FieldName);
574+
sqlColumns[i] = new SelectItemExpression(this, field.CustomSelect, field.FieldName);
575575
}
576576
else if (field.IsRowVersion)
577577
{
578578
sqlColumns[i] = GetRowVersionColumnName(field);
579579
}
580580
else
581581
{
582-
sqlColumns[i] = new SelectListColumn(this, field.FieldName, null, tablePrefix);
582+
sqlColumns[i] = new SelectItemColumn(this, field.FieldName, null, tablePrefix);
583583
}
584584
}
585585

586-
return new SelectList(sqlColumns);
586+
return sqlColumns;
587587
}
588588

589589
public virtual string ToInsertRowStatement(IDbCommand cmd, object objWithProperties, ICollection<string> insertFields = null)

src/ServiceStack.OrmLite/OrmLiteUtils.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,20 @@ public static string GetColumnNames(this ModelDefinition modelDef, IOrmLiteDiale
289289
return dialect.GetColumnNames(modelDef);
290290
}
291291

292+
public static string ToSelectString(this SelectItem[] items)
293+
{
294+
var sb = StringBuilderCache.Allocate();
295+
296+
foreach (var item in items)
297+
{
298+
if (sb.Length > 0)
299+
sb.Append(", ");
300+
sb.Append(item);
301+
}
302+
303+
return StringBuilderCache.ReturnAndFree(sb);
304+
}
305+
292306
internal static string SetIdsInSqlParams(this IDbCommand dbCmd, IEnumerable idValues)
293307
{
294308
var inArgs = Sql.Flatten(idValues);

0 commit comments

Comments
 (0)