Skip to content

Commit 1f7af60

Browse files
committed
More analyzer fixes. Optimize code for unquoted tablenames
1 parent 28f60eb commit 1f7af60

23 files changed

Lines changed: 274 additions & 285 deletions

File tree

src/RepoDb.Core.IntegrationTests/AnonymousTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public void Cleanup()
2424

2525
#region Helpers
2626

27-
private dynamic CreateIdentityTableTypeDef()
27+
private static dynamic CreateIdentityTableTypeDef()
2828
{
2929
return new
3030
{
@@ -50,7 +50,7 @@ private dynamic CreateIdentityTableTypeDef()
5050
public void TestExecuteQueryForAnonymous() =>
5151
TestExecuteQueryForAnonymousTrigger(CreateIdentityTableTypeDef());
5252

53-
private void TestExecuteQueryForAnonymousTrigger<TAnonymous>(TAnonymous typeDef)
53+
private static void TestExecuteQueryForAnonymousTrigger<TAnonymous>(TAnonymous typeDef)
5454
where TAnonymous : class
5555
{
5656
// Setup
@@ -75,7 +75,7 @@ private void TestExecuteQueryForAnonymousTrigger<TAnonymous>(TAnonymous typeDef)
7575
public async Task TestExecuteQueryAsyncForAnonymous() =>
7676
await TestExecuteQueryAsyncForAnonymousTrigger(CreateIdentityTableTypeDef());
7777

78-
private async Task TestExecuteQueryAsyncForAnonymousTrigger<TAnonymous>(TAnonymous typeDef)
78+
private static async Task TestExecuteQueryAsyncForAnonymousTrigger<TAnonymous>(TAnonymous typeDef)
7979
where TAnonymous : class
8080
{
8181
// Setup
@@ -104,7 +104,7 @@ private async Task TestExecuteQueryAsyncForAnonymousTrigger<TAnonymous>(TAnonymo
104104
public void TestQueryForAnonymous() =>
105105
TestQueryForAnonymousTrigger(CreateIdentityTableTypeDef());
106106

107-
private void TestQueryForAnonymousTrigger<TAnonymous>(TAnonymous typeDef)
107+
private static void TestQueryForAnonymousTrigger<TAnonymous>(TAnonymous typeDef)
108108
where TAnonymous : class
109109
{
110110
// Setup

src/RepoDb.Core.IntegrationTests/CacheTest.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,6 @@ public void TestSqlConnectionExecuteScalarCache()
278278
var item = cache.Get<DateTime>(cacheKey);
279279

280280
// Assert
281-
Assert.IsNotNull(result);
282281
Assert.IsNotNull(item);
283282
Assert.AreEqual(result, item.Value);
284283
}
@@ -304,7 +303,6 @@ public async Task TestSqlConnectionExecuteScalarAsyncCache()
304303
var item = cache.Get<DateTime>(cacheKey);
305304

306305
// Assert
307-
Assert.IsNotNull(result);
308306
Assert.IsNotNull(item);
309307
Assert.AreEqual(result, item.Value);
310308
}

src/RepoDb.Core.IntegrationTests/ClassHandlerTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ public void ThrowExceptionOnUpdateWithClassHandlerWithDifferentModel()
550550

551551
using var connection = new SqlConnection(Database.ConnectionStringForRepoDb);
552552
// Act
553-
connection.Insert(table);
553+
Assert.ThrowsExactly<InvalidTypeException>(() => connection.Insert(table));
554554

555555
// Setup
556556
var handler = ClassHandlerCache.Get<ClassHandlerTestModelClassHandler>(typeof(ClassHandlerIdentityTableWithTestModel));
@@ -592,7 +592,7 @@ public void ThrowExceptionOnUpdateAllWithClassHandlerWithDifferentModel()
592592

593593
using var connection = new SqlConnection(Database.ConnectionStringForRepoDb);
594594
// Act
595-
connection.InsertAll(tables);
595+
Assert.ThrowsExactly<InvalidTypeException>(() => connection.InsertAll(tables));
596596

597597
// Setup
598598
var handler = ClassHandlerCache.Get<ClassHandlerTestModelClassHandler>(typeof(ClassHandlerIdentityTableWithTestModel));

src/RepoDb.Core.IntegrationTests/DbHelperTest.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Data.SqlClient;
22
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using RepoDb.Extensions;
34
using RepoDb.IntegrationTests;
45
using RepoDb.IntegrationTests.Models;
56
using RepoDb.IntegrationTests.Setup;
@@ -35,7 +36,7 @@ public void TestDbHelperGetFields()
3536
var helper = connection.GetDbHelper();
3637

3738
// Act
38-
var fields = helper.GetFields(connection, "[sc].[IdentityTable]", null);
39+
var fields = helper.GetFields(connection, "[sc].[IdentityTable]".AsUnquoted(connection.GetDbSetting()), null);
3940

4041
// Assert
4142
using var reader = connection.ExecuteReader("SELECT name FROM sys.columns WHERE object_id = OBJECT_ID(@TableName);",
@@ -66,7 +67,7 @@ public void TestDbHelperGetFieldsPrimary()
6667
var helper = connection.GetDbHelper();
6768

6869
// Act
69-
var fields = helper.GetFields(connection, "[NonIdentityTable]", null);
70+
var fields = helper.GetFields(connection, "[NonIdentityTable]".AsUnquoted(connection.GetDbSetting()), null);
7071
var primary = fields.FirstOrDefault(f => f.IsPrimary == true);
7172

7273
// Assert
@@ -83,7 +84,7 @@ public void TestDbHelperGetFieldsIdentity()
8384
var helper = connection.GetDbHelper();
8485

8586
// Act
86-
var fields = helper.GetFields(connection, "[sc].[IdentityTable]", null);
87+
var fields = helper.GetFields(connection, "[sc].[IdentityTable]".AsUnquoted(connection.GetDbSetting()), null);
8788
var primary = fields.FirstOrDefault(f => f.IsIdentity == true);
8889

8990
// Assert
@@ -104,7 +105,7 @@ public async Task TestDbHelperGetFieldsAsync()
104105
var helper = connection.GetDbHelper();
105106

106107
// Act
107-
var fields = await helper.GetFieldsAsync(connection, "[sc].[IdentityTable]", null);
108+
var fields = await helper.GetFieldsAsync(connection, "[sc].[IdentityTable]".AsUnquoted(connection.GetDbSetting()), null);
108109

109110
// Assert
110111
using var reader = connection.ExecuteReader("SELECT name FROM sys.columns WHERE object_id = OBJECT_ID(@TableName);",
@@ -135,7 +136,7 @@ public async Task TestDbHelperGetFieldsAsyncPrimary()
135136
var helper = connection.GetDbHelper();
136137

137138
// Act
138-
var fields = await helper.GetFieldsAsync(connection, "[NonIdentityTable]", null);
139+
var fields = await helper.GetFieldsAsync(connection, "[NonIdentityTable]".AsUnquoted(connection.GetDbSetting()), null);
139140
var primary = fields.FirstOrDefault(f => f.IsPrimary == true);
140141

141142
// Assert
@@ -152,7 +153,7 @@ public async Task TestDbHelperGetFieldsAsyncIdentity()
152153
var helper = connection.GetDbHelper();
153154

154155
// Act
155-
var fields = await helper.GetFieldsAsync(connection, "[sc].[IdentityTable]", null);
156+
var fields = await helper.GetFieldsAsync(connection, "[sc].[IdentityTable]".AsUnquoted(connection.GetDbSetting()), null);
156157
var primary = fields.FirstOrDefault(f => f.IsIdentity == true);
157158

158159
// Assert

src/RepoDb.MySql/DbHelpers/MySqlDbHelper.cs

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -73,21 +73,17 @@ LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
7373
///
7474
/// </summary>
7575
/// <returns></returns>
76-
private HashSet<string> GetBlobTypes()
77-
{
78-
return
79-
[
80-
"blob",
81-
"blobasarray",
82-
"binary",
83-
"longtext",
84-
"mediumtext",
85-
"longblob",
86-
"mediumblob",
87-
"tinyblob",
88-
"varbinary"
89-
];
90-
}
76+
static readonly HashSet<string> BlobTypes = new([
77+
"blob",
78+
"blobasarray",
79+
"binary",
80+
"longtext",
81+
"mediumtext",
82+
"longblob",
83+
"mediumblob",
84+
"tinyblob",
85+
"varbinary"
86+
], StringComparer.OrdinalIgnoreCase));
9187

9288
/// <summary>
9389
///
@@ -97,16 +93,7 @@ private HashSet<string> GetBlobTypes()
9793
private DbField ReaderToDbField(DbDataReader reader)
9894
{
9995
var columnType = reader.GetString(4);
100-
var excluded = GetBlobTypes();
101-
int? size;
102-
if (excluded.Contains(columnType.ToLowerInvariant()))
103-
{
104-
size = null;
105-
}
106-
else
107-
{
108-
size = reader.IsDBNull(5) ? (int?)null : reader.GetInt32(5);
109-
}
96+
int? size = BlobTypes.Contains(columnType) ? null : reader.IsDBNull(5) ? (int?)null : reader.GetInt32(5);
11097
return new DbField(reader.GetString(0),
11198
reader.GetBoolean(1),
11299
reader.GetBoolean(2),
@@ -143,7 +130,7 @@ public override DbFieldCollection GetFields(IDbConnection connection,
143130
var param = new
144131
{
145132
TableSchema = connection.Database,
146-
TableName = DataEntityExtension.GetTableName(tableName, m_dbSetting).AsUnquoted(m_dbSetting)
133+
TableName = DataEntityExtension.GetTableName(tableName, m_dbSetting)
147134
};
148135

149136
// Iterate and extract

src/RepoDb.MySqlConnector/DbHelpers/MySqlConnectorDbHelper.cs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,7 @@ FROM INFORMATION_SCHEMA.COLUMNS
6363
///
6464
/// </summary>
6565
/// <returns></returns>
66-
private HashSet<string> GetBlobTypes()
67-
{
68-
return
69-
[
66+
private static readonly HashSet<string> BlobTypes = new([
7067
"blob",
7168
"blobasarray",
7269
"binary",
@@ -76,8 +73,7 @@ private HashSet<string> GetBlobTypes()
7673
"mediumblob",
7774
"tinyblob",
7875
"varbinary"
79-
];
80-
}
76+
], StringComparer.OrdinalIgnoreCase);
8177

8278
/// <summary>
8379
///
@@ -87,16 +83,7 @@ private HashSet<string> GetBlobTypes()
8783
private DbField ReaderToDbField(DbDataReader reader)
8884
{
8985
var columnType = reader.GetString(4);
90-
var excluded = GetBlobTypes();
91-
int? size;
92-
if (excluded.Contains(columnType.ToLowerInvariant()))
93-
{
94-
size = null;
95-
}
96-
else
97-
{
98-
size = reader.IsDBNull(5) ? (int?)null : reader.GetInt32(5);
99-
}
86+
int? size = BlobTypes.Contains(columnType) ? null : reader.IsDBNull(5) ? (int?)null : reader.GetInt32(5);
10087
return new DbField(reader.GetString(0),
10188
reader.GetBoolean(1),
10289
reader.GetBoolean(2),
@@ -133,7 +120,7 @@ public override DbFieldCollection GetFields(IDbConnection connection,
133120
var param = new
134121
{
135122
TableSchema = connection.Database,
136-
TableName = DataEntityExtension.GetTableName(tableName, m_dbSetting).AsUnquoted(m_dbSetting)
123+
TableName = DataEntityExtension.GetTableName(tableName, m_dbSetting)
137124
};
138125

139126
// Iterate and extract

src/RepoDb.MySqlConnector/StatementBuilders/MySqlConnectorStatementBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ public override string CreateMerge(string tableName,
482482
// Verify the fields
483483
if (fields?.Any() != true)
484484
{
485-
throw new ArgumentNullException($"The list of fields cannot be null or empty.");
485+
throw new ArgumentNullException(nameof(fields), $"The list of fields cannot be null or empty.");
486486
}
487487

488488
// Validate the Primary Key

src/RepoDb.Oracle/DbHelpers/OracleDbHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ public override DbFieldCollection GetFields(IDbConnection connection, string tab
8282
var commandText = GetFieldsQuery;
8383
var param = new
8484
{
85-
Schema = DataEntityExtension.GetSchema(tableName, DbSetting)?.AsUnquoted(DbSetting).ToUpperInvariant(),
86-
TableName = DataEntityExtension.GetTableName(tableName, DbSetting).AsUnquoted(DbSetting)
85+
Schema = DataEntityExtension.GetSchema(tableName, DbSetting)?.ToUpperInvariant(),
86+
TableName = DataEntityExtension.GetTableName(tableName, DbSetting)
8787
};
8888
var param2 = string.IsNullOrWhiteSpace(param.Schema) ? (object)new { param.TableName } : null;
8989
if (param2 is { })

src/RepoDb.Oracle/StatementBuilders/OracleStatementBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public override string CreateMerge(string tableName,
109109
.WriteText(string.Join(", ", updateFields.Select(f => $"T.{f.FieldName.AsQuoted(DbSetting)} = S.{f.FieldName.AsQuoted(DbSetting)}")));
110110
}
111111

112-
if (insertColumns.Any())
112+
if (insertColumns.Count > 0)
113113
{
114114
builder
115115
.When()

src/RepoDb.PostgreSql/DbHelpers/PostgreSqlDbHelper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ private async Task<DbField> ReaderToDbFieldAsync(DbDataReader reader,
118118
!await reader.IsDBNullAsync(2, cancellationToken) && await reader.GetFieldValueAsync<bool>(2, cancellationToken),
119119
!await reader.IsDBNullAsync(3, cancellationToken) && await reader.GetFieldValueAsync<bool>(3, cancellationToken),
120120
DbTypeResolver.Resolve(dbType)!,
121-
await reader.IsDBNullAsync(5) ? null : await reader.GetFieldValueAsync<int>(5, cancellationToken),
121+
await reader.IsDBNullAsync(5, cancellationToken) ? null : await reader.GetFieldValueAsync<int>(5, cancellationToken),
122122
null,
123123
null,
124124
dbType,
@@ -176,8 +176,8 @@ public override DbFieldCollection GetFields(IDbConnection connection, string tab
176176
var commandText = GetCommandText();
177177
var param = new
178178
{
179-
Schema = DataEntityExtension.GetSchema(tableName, m_dbSetting)?.AsUnquoted(m_dbSetting),
180-
TableName = DataEntityExtension.GetTableName(tableName, m_dbSetting).AsUnquoted(m_dbSetting)
179+
Schema = DataEntityExtension.GetSchema(tableName, m_dbSetting),
180+
TableName = DataEntityExtension.GetTableName(tableName, m_dbSetting)
181181
};
182182

183183
// Iterate and extract

0 commit comments

Comments
 (0)