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

Commit 263744c

Browse files
committed
Add SqlConcat,SqlCurrency + refactor SqlExpression to use it
1 parent 176b42a commit 263744c

File tree

15 files changed

+104
-32
lines changed

15 files changed

+104
-32
lines changed

src/ServiceStack.OrmLite.Firebird/FirebirdOrmLiteDialectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,8 @@ public override void DropColumn(IDbConnection db, Type modelType, string columnN
801801

802802
db.ExecuteSql(command);
803803
}
804+
805+
public override string SqlConcat(IEnumerable<object> args) => string.Join(" || ", args);
804806
}
805807
}
806808

src/ServiceStack.OrmLite.Firebird/FirebirdSqlExpression.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@ protected override object VisitColumnAccessMethod(MethodCallExpression m)
3030
}
3131
return new PartialSqlString(statement);
3232
}
33-
34-
protected override PartialSqlString ToConcatPartialString(List<object> args)
35-
{
36-
return new PartialSqlString(string.Join(" || ", args));
37-
}
3833
}
3934
}
4035

src/ServiceStack.OrmLite.MySql/MySqlDialectProvider.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,9 @@ public string GetColumnDefinition(FieldDefinition fieldDef)
208208
return ret;
209209
}
210210

211+
public override string SqlCurrency(string fieldOrValue, string currencySymbol) =>
212+
SqlConcat(new []{ "'" + currencySymbol + "'", "format(" + fieldOrValue + ",2)"});
213+
211214
protected MySqlConnection Unwrap(IDbConnection db)
212215
{
213216
return (MySqlConnection)db.ToDbConnection();

src/ServiceStack.OrmLite.MySql/MySqlExpression.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,10 @@
1-
using System.Collections.Generic;
2-
using System.Linq.Expressions;
3-
4-
namespace ServiceStack.OrmLite.MySql
1+
namespace ServiceStack.OrmLite.MySql
52
{
63
public class MySqlExpression<T> : SqlExpression<T>
74
{
85
public MySqlExpression(IOrmLiteDialectProvider dialectProvider)
96
: base(dialectProvider) {}
107

11-
protected override PartialSqlString ToConcatPartialString(List<object> args)
12-
{
13-
return new PartialSqlString($"CONCAT({string.Join(", ", args)})");
14-
}
15-
168
protected override string ToCast(string quotedColName)
179
{
1810
return $"cast({quotedColName} as char(1000))";

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,5 +1084,7 @@ public override string ToRowCountStatement(string innerSql)
10841084
{
10851085
return "SELECT COUNT(*) FROM ({0})".Fmt(innerSql);
10861086
}
1087+
1088+
public override string SqlConcat(IEnumerable<object> args) => string.Join(" || ", args);
10871089
}
10881090
}

src/ServiceStack.OrmLite.Oracle/OracleSqlExpression.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,6 @@ public override SqlExpression<T> OrderByRandom()
5252
{
5353
return base.OrderBy("dbms_random.value");
5454
}
55-
56-
protected override PartialSqlString ToConcatPartialString(List<object> args)
57-
{
58-
return new PartialSqlString(string.Join(" || ", args));
59-
}
6055
}
6156
}
6257

src/ServiceStack.OrmLite.PostgreSQL/PostgreSQLDialectProvider.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,11 @@ public override void PrepareStoredProcedureStatement<T>(IDbCommand cmd, T obj)
313313
SetParameterValues<T>(cmd, obj);
314314
}
315315

316+
public override string SqlConcat(IEnumerable<object> args) => string.Join(" || ", args);
317+
318+
public override string SqlCurrency(string fieldOrValue, string currencySymbol) => currencySymbol == "$"
319+
? fieldOrValue + "::text::money::text"
320+
: "replace(" + fieldOrValue + "::text::money::text,'$','" + currencySymbol + "')";
316321

317322
protected NpgsqlConnection Unwrap(IDbConnection db)
318323
{

src/ServiceStack.OrmLite.PostgreSQL/PostgreSqlExpression.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Collections.Generic;
21
using System.Linq;
32

43
namespace ServiceStack.OrmLite.PostgreSQL
@@ -25,11 +24,6 @@ public override SqlExpression<T> OrderByRandom()
2524
{
2625
return base.OrderBy("RANDOM()");
2726
}
28-
29-
protected override PartialSqlString ToConcatPartialString(List<object> args)
30-
{
31-
return new PartialSqlString(string.Join(" || ", args));
32-
}
3327
}
3428

3529
}

src/ServiceStack.OrmLite.SqlServer/SqlServerOrmLiteDialectProvider.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,9 @@ public override string GetLoadChildrenSubSelect<From>(SqlExpression<From> expr)
355355
return base.GetLoadChildrenSubSelect(expr);
356356
}
357357

358+
public override string SqlCurrency(string fieldOrValue, string currencySymbol) =>
359+
SqlConcat(new[] { "'" + currencySymbol + "'", $"CONVERT(VARCHAR, CONVERT(MONEY, {fieldOrValue}), 1)" });
360+
358361
protected SqlConnection Unwrap(IDbConnection db) => (SqlConnection)db.ToDbConnection();
359362

360363
protected SqlCommand Unwrap(IDbCommand cmd) => (SqlCommand)cmd.ToDbCommand();

src/ServiceStack.OrmLite.Sqlite/SqliteExpression.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,5 @@ public override SqlExpression<T> OrderByRandom()
7676
{
7777
return base.OrderBy("random()");
7878
}
79-
80-
protected override PartialSqlString ToConcatPartialString(List<object> args)
81-
{
82-
return new PartialSqlString(string.Join(" || ", args));
83-
}
8479
}
8580
}

0 commit comments

Comments
 (0)