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

Commit 7f6647c

Browse files
committed
Move old InsertOnly to legacy replace with Expression API
1 parent c1ce133 commit 7f6647c

File tree

16 files changed

+48
-28
lines changed

16 files changed

+48
-28
lines changed

src/ServiceStack.OrmLite.MySql.Tests/Expressions/AuthorUseCase.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,8 @@ public void AuthorUsesCases()
159159

160160
// insert values only in Id, Name, Birthday, Rate and Active fields
161161
expected = 4;
162-
ev.Insert(rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, ev);
164-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, ev);
162+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
165164
ev.Where().Where(rn => !rn.Active);
166165
result = db.Select(ev);
167166
Assert.AreEqual(expected, result.Count);

src/ServiceStack.OrmLite.PostgreSQL.Tests/Expressions/AuthorUseCase.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,8 @@ public void AuthorUsesCases()
160160

161161
// insert values only in Id, Name, Birthday, Rate and Active fields
162162
expected = 4;
163-
ev.Insert(rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
164-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, ev);
165-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, ev);
163+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
164+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
166165
ev.Where().Where(rn => !rn.Active);
167166
result = db.Select(ev);
168167
Assert.AreEqual(expected, result.Count);

src/ServiceStack.OrmLite.SqlServerTests/Expressions/AuthorUseCase.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,8 @@ public void AuthorUsesCases()
159159

160160
// insert values only in Id, Name, Birthday, Rate and Active fields
161161
expected = 4;
162-
ev.Insert(rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, ev);
164-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, ev);
162+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
165164
ev.Where().Where(rn => !rn.Active);
166165
result = db.Select(ev);
167166
Assert.AreEqual(expected, result.Count);

src/ServiceStack.OrmLite.VistaDB.Tests/Expressions/AuthorUseCase.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,8 @@ public void AuthorUsesCases()
159159

160160
// insert values only in Id, Name, Birthday, Rate and Active fields
161161
expected = 4;
162-
ev.Insert(rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, ev);
164-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, ev);
162+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
165164
ev.Where().Where(rn => !rn.Active);
166165
result = db.Select(ev);
167166
Assert.AreEqual(expected, result.Count);

src/ServiceStack.OrmLite/Expressions/WriteExpressionCommandExtensions.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,15 @@ internal static void PrepareUpdateAnonSql<T>(this IDbCommand dbCmd, IOrmLiteDial
138138
dialectProvider.GetQuotedTableName(modelDef), StringBuilderCache.ReturnAndFree(sql), whereSql);
139139
}
140140

141-
public static void InsertOnly<T>(this IDbCommand dbCmd, T obj, SqlExpression<T> onlyFields)
141+
public static void InsertOnly<T>(this IDbCommand dbCmd, T obj, Expression<Func<T, object>> onlyFields)
142142
{
143143
if (OrmLiteConfig.InsertFilter != null)
144144
OrmLiteConfig.InsertFilter(dbCmd, obj);
145145

146-
var sql = dbCmd.GetDialectProvider().ToInsertRowStatement(dbCmd, obj, onlyFields.InsertFields);
146+
var q = dbCmd.GetDialectProvider().SqlExpression<T>();
147+
q.Insert(onlyFields);
148+
149+
var sql = dbCmd.GetDialectProvider().ToInsertRowStatement(dbCmd, obj, q.InsertFields);
147150
dbCmd.ExecuteSql(sql);
148151
}
149152

src/ServiceStack.OrmLite/Legacy/OrmLiteWriteExpressionsApiLegacy.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,5 +91,17 @@ public static int Delete<T>(this IDbConnection dbConn, Func<SqlExpression<T>, Sq
9191
{
9292
return dbConn.Exec(dbCmd => dbCmd.Delete(where));
9393
}
94+
95+
/// <summary>
96+
/// Using an SqlExpression to only Insert the fields specified, e.g:
97+
///
98+
/// db.InsertOnly(new Person { FirstName = "Amy" }, q => q.Insert(p => new { p.FirstName }));
99+
/// INSERT INTO "Person" ("FirstName") VALUES ('Amy');
100+
/// </summary>
101+
[Obsolete("Use db.InsertOnly(() => new Person { ... })")]
102+
public static void InsertOnly<T>(this IDbConnection dbConn, T obj, SqlExpression<T> onlyFields)
103+
{
104+
dbConn.Exec(dbCmd => dbCmd.InsertOnly(obj, onlyFields));
105+
}
94106
}
95107
}

src/ServiceStack.OrmLite/Legacy/WriteExpressionCommandExtensionsLegacy.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,5 +90,15 @@ internal static int Delete<T>(this IDbCommand dbCmd, Func<SqlExpression<T>, SqlE
9090
{
9191
return dbCmd.Delete(where(dbCmd.GetDialectProvider().SqlExpression<T>()));
9292
}
93+
94+
[Obsolete(Messages.LegacyApi)]
95+
public static void InsertOnly<T>(this IDbCommand dbCmd, T obj, SqlExpression<T> onlyFields)
96+
{
97+
if (OrmLiteConfig.InsertFilter != null)
98+
OrmLiteConfig.InsertFilter(dbCmd, obj);
99+
100+
var sql = dbCmd.GetDialectProvider().ToInsertRowStatement(dbCmd, obj, onlyFields.InsertFields);
101+
dbCmd.ExecuteSql(sql);
102+
}
93103
}
94104
}

src/ServiceStack.OrmLite/OrmLiteWriteExpressionsApi.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,10 @@ public static int Update<T>(this IDbConnection dbConn, object updateOnly, Expres
137137
/// <summary>
138138
/// Using an SqlExpression to only Insert the fields specified, e.g:
139139
///
140-
/// db.InsertOnly(new Person { FirstName = "Amy" }, q => q.Insert(p => new { p.FirstName }));
140+
/// db.InsertOnly(new Person { FirstName = "Amy" }, p => new { p.FirstName }));
141141
/// INSERT INTO "Person" ("FirstName") VALUES ('Amy');
142142
/// </summary>
143-
public static void InsertOnly<T>(this IDbConnection dbConn, T obj, SqlExpression<T> onlyFields)
143+
public static void InsertOnly<T>(this IDbConnection dbConn, T obj, Expression<Func<T, object>> onlyFields)
144144
{
145145
dbConn.Exec(dbCmd => dbCmd.InsertOnly(obj, onlyFields));
146146
}

tests/ServiceStack.OrmLite.FirebirdTests/Expressions/AuthorUseCase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ public void AuthorUsesCases()
160160
// insert values only in Id, Name, Birthday, Rate and Active fields
161161
expected = 4;
162162
ev.Insert(rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, ev);
164-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, ev);
163+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
164+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
165165
ev.Where().Where(rn => !rn.Active);
166166
result = db.Select(ev);
167167
Assert.AreEqual(expected, result.Count);

tests/ServiceStack.OrmLite.SqliteTests/Expressions/AuthorUseCase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ public void AuthorUsesCases()
160160
// insert values only in Id, Name, Birthday, Rate and Active fields
161161
expected = 4;
162162
ev.Insert(rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
163-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, ev);
164-
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, ev);
163+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Victor Grozny", Birthday = DateTime.Today.AddYears(-18) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
164+
db.InsertOnly(new Author() { Active = false, Rate = 0, Name = "Ivan Chorny", Birthday = DateTime.Today.AddYears(-19) }, rn => new { rn.Id, rn.Name, rn.Birthday, rn.Active, rn.Rate });
165165
ev.Where().Where(rn => !rn.Active);
166166
result = db.Select(ev);
167167
Assert.AreEqual(expected, result.Count);

0 commit comments

Comments
 (0)