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

Commit 1a9cbad

Browse files
committed
Pass FieldDefinition when creating DB Params so can be used to initialize db param
1 parent 5498e14 commit 1a9cbad

File tree

12 files changed

+125
-16
lines changed

12 files changed

+125
-16
lines changed

src/ServiceStack.OrmLite.Firebird/FirebirdOrmLiteDialectProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ public override void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithP
260260
sqlFilter
261261
.Append(GetQuotedColumnName(fieldDef.FieldName))
262262
.Append("=")
263-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
263+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef).ParameterName);
264264

265265
continue;
266266
}
@@ -274,7 +274,7 @@ public override void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithP
274274
sql
275275
.Append(GetQuotedColumnName(fieldDef.FieldName))
276276
.Append("=")
277-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
277+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef).ParameterName);
278278
}
279279

280280
var strFilter = StringBuilderCacheAlt.ReturnAndFree(sqlFilter);

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -744,7 +744,7 @@ public override void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithP
744744
sqlFilter
745745
.Append(GetQuotedColumnName(fieldDef.FieldName))
746746
.Append("=")
747-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
747+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef).ParameterName);
748748

749749
continue;
750750
}
@@ -758,7 +758,7 @@ public override void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithP
758758
sql
759759
.Append(GetQuotedColumnName(fieldDef.FieldName))
760760
.Append("=")
761-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties)).ParameterName);
761+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef).ParameterName);
762762
}
763763

764764
var strFilter = StringBuilderCacheAlt.ReturnAndFree(sqlFilter);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using ServiceStack.DataAnnotations;
2+
3+
namespace ServiceStack.OrmLite.PostgreSQL
4+
{
5+
public class PgSqlJsonAttribute : CustomFieldAttribute
6+
{
7+
public PgSqlJsonAttribute() : base("json") { }
8+
}
9+
10+
public class PgSqlJsonBAttribute : CustomFieldAttribute
11+
{
12+
public PgSqlJsonBAttribute() : base("jsonb") { }
13+
}
14+
15+
public class PgSqlHStoreAttribute : CustomFieldAttribute
16+
{
17+
public PgSqlHStoreAttribute() : base("hstore") { }
18+
}
19+
20+
public class PgSqlTextArrayAttribute : CustomFieldAttribute
21+
{
22+
public PgSqlTextArrayAttribute() : base("text[]") { }
23+
}
24+
25+
public class PgSqlIntArrayAttribute : CustomFieldAttribute
26+
{
27+
public PgSqlIntArrayAttribute() : base("integer[]") { }
28+
}
29+
30+
public class PgSqlBigIntArrayAttribute : CustomFieldAttribute
31+
{
32+
public PgSqlBigIntArrayAttribute() : base("bigint[]") { }
33+
}
34+
}

src/ServiceStack.OrmLite.PostgreSQL/ServiceStack.OrmLite.PostgreSQL.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
<Compile Include="Converters\PostgreSqlIntegerConverters.cs" />
7878
<Compile Include="Converters\PostgreSqlStringConverters.cs" />
7979
<Compile Include="Converters\PostrgreSqlFloatConverters.cs" />
80+
<Compile Include="PgsqlTypes.cs" />
8081
<Compile Include="PostgreSqlDialect.cs" />
8182
<Compile Include="PostgreSqlDialectProvider.cs" />
8283
<Compile Include="PostgreSqlNamingStrategy.cs" />

src/ServiceStack.OrmLite.SqlServer/SqlServerExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ internal static void PrepareSqlServerUpdateStatement<T>(IDbCommand dbCmd, SqlExp
9090
if (setFields.Length > 0)
9191
setFields.Append(", ");
9292

93-
var param = dialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType);
93+
var param = dialectProvider.AddParam(dbCmd, value, fieldDef);
9494
setFields
9595
.Append(dialectProvider.GetQuotedColumnName(fieldDef.FieldName))
9696
.Append("=")

src/ServiceStack.OrmLite.VistaDB/VistaDBExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public override void PrepareUpdateStatement(IDbCommand dbCmd, T item, bool exclu
3131
if (setFields.Length > 0)
3232
setFields.Append(", ");
3333

34-
var param = DialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType);
34+
var param = DialectProvider.AddParam(dbCmd, value, fieldDef);
3535
setFields
3636
.Append(DialectProvider.GetQuotedColumnName(fieldDef.FieldName))
3737
.Append("=")

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,7 +1025,7 @@ public virtual void PrepareUpdateStatement(IDbCommand dbCmd, T item, bool exclud
10251025
setFields
10261026
.Append(DialectProvider.GetQuotedColumnName(fieldDef.FieldName))
10271027
.Append("=")
1028-
.Append(DialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
1028+
.Append(DialectProvider.AddParam(dbCmd, value, fieldDef).ParameterName);
10291029
}
10301030

10311031
if (setFields.Length == 0)
@@ -2411,11 +2411,17 @@ public static IDbDataParameter CreateParam(this IOrmLiteDialectProvider dialectP
24112411
return to;
24122412
}
24132413

2414-
public static IDbDataParameter AddParam(this IOrmLiteDialectProvider dialectProvider, IDbCommand dbCmd, object value, Type fieldType = null)
2414+
public static IDbDataParameter AddParam(this IOrmLiteDialectProvider dialectProvider,
2415+
IDbCommand dbCmd,
2416+
object value,
2417+
FieldDefinition fieldDef)
24152418
{
24162419
var paramName = dbCmd.Parameters.Count.ToString();
2420+
var parameter = dialectProvider.CreateParam(paramName, value, fieldDef?.ColumnType);
2421+
2422+
if (fieldDef != null)
2423+
dialectProvider.SetParameter(fieldDef, parameter);
24172424

2418-
var parameter = dialectProvider.CreateParam(paramName, value, fieldType);
24192425
dbCmd.Parameters.Add(parameter);
24202426
return parameter;
24212427
}

src/ServiceStack.OrmLite/Expressions/WriteExpressionCommandExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Data;
34
using System.Linq;
45
using System.Linq.Expressions;
@@ -149,7 +150,7 @@ internal static void PrepareUpdateAnonSql<T>(this IDbCommand dbCmd, IOrmLiteDial
149150
sql
150151
.Append(dialectProvider.GetQuotedColumnName(fieldDef.FieldName))
151152
.Append("=")
152-
.Append(dialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
153+
.Append(dialectProvider.AddParam(dbCmd, value, fieldDef).ParameterName);
153154
}
154155

155156
dbCmd.CommandText = $"UPDATE {dialectProvider.GetQuotedTableName(modelDef)} " +

src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ string GetColumnDefinition(
112112

113113
void SetParameterValues<T>(IDbCommand dbCmd, object obj);
114114

115+
void SetParameter(FieldDefinition fieldDef, IDbDataParameter p);
116+
115117
Dictionary<string, FieldDefinition> GetFieldDefinitionMap(ModelDefinition modelDef);
116118

117119
object GetFieldValue(FieldDefinition fieldDef, object value);

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ public virtual void PrepareInsertRowStatement<T>(IDbCommand dbCmd, Dictionary<st
677677
try
678678
{
679679
sbColumnNames.Append(GetQuotedColumnName(fieldDef.FieldName));
680-
sbColumnValues.Append(this.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
680+
sbColumnValues.Append(this.AddParam(dbCmd, value, fieldDef).ParameterName);
681681
}
682682
catch (Exception ex)
683683
{
@@ -1000,7 +1000,7 @@ public virtual void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithPr
10001000
sqlFilter
10011001
.Append(GetQuotedColumnName(fieldDef.FieldName))
10021002
.Append("=")
1003-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
1003+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef).ParameterName);
10041004

10051005
continue;
10061006
}
@@ -1014,7 +1014,7 @@ public virtual void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithPr
10141014
sql
10151015
.Append(GetQuotedColumnName(fieldDef.FieldName))
10161016
.Append("=")
1017-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
1017+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef).ParameterName);
10181018
}
10191019
catch (Exception ex)
10201020
{
@@ -1051,7 +1051,7 @@ public virtual void PrepareUpdateRowStatement<T>(IDbCommand dbCmd, Dictionary<st
10511051
sql
10521052
.Append(GetQuotedColumnName(fieldDef.FieldName))
10531053
.Append("=")
1054-
.Append(this.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
1054+
.Append(this.AddParam(dbCmd, value, fieldDef).ParameterName);
10551055
}
10561056
catch (Exception ex)
10571057
{
@@ -1094,14 +1094,14 @@ public virtual void PrepareUpdateRowAddStatement<T>(IDbCommand dbCmd, Dictionary
10941094
.Append("=")
10951095
.Append(quotedFieldName)
10961096
.Append("+")
1097-
.Append(this.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
1097+
.Append(this.AddParam(dbCmd, value, fieldDef).ParameterName);
10981098
}
10991099
else
11001100
{
11011101
sql
11021102
.Append(quotedFieldName)
11031103
.Append("=")
1104-
.Append(this.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
1104+
.Append(this.AddParam(dbCmd, value, fieldDef).ParameterName);
11051105
}
11061106
}
11071107
catch (Exception ex)

0 commit comments

Comments
 (0)