Skip to content

Commit 5c847fe

Browse files
Merge pull request #9 from abhinavminhas/dev
Nuget Package Creation - v1.1.0
2 parents 058d890 + 07f4c16 commit 5c847fe

File tree

17 files changed

+1380
-14
lines changed

17 files changed

+1380
-14
lines changed

.github/workflows/publish-nuget-Package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Publish Nuget Package
22

33
env:
4-
NUGET_PACKAGE_NAME_VERSION: "QueryDB.1.0.0.nupkg"
4+
NUGET_PACKAGE_NAME_VERSION: "QueryDB.1.1.0.nupkg"
55

66
on:
77
workflow_dispatch:

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@ All notable changes to this project documented here.
88
- QueryDB framework for simplified querying and executing transactions across multiple database systems.
99
- Retrieve data from database.
1010
- Execute database commands.
11-
- Execute transactions while maintaining atomicity.
11+
- Execute transactions while maintaining atomicity.
12+
13+
## [1.1.0](https://www.nuget.org/packages/QueryDB/1.1.0) - 2025-02-20
14+
### Added
15+
- Execute scalar queries (returning a single value).

QueryDB.Core.Tests/MSSQLTests.cs

Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,257 @@ public void Test_MSSQL_FetchData_Entity_Strict_Error_Check()
310310

311311
#endregion
312312

313+
#region Execute Scalar Tests - << string ExecuteScalar(string sqlStatement); >>
314+
315+
[TestMethod]
316+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
317+
public void Test_MSSQL_ExecuteScalar_As_StringReturn_Scalar_Queries()
318+
{
319+
var countOfRecords = Queries.MSSQLQueries.TestDB.ScalarQueries.Count_Of_Records;
320+
var max = Queries.MSSQLQueries.TestDB.ScalarQueries.Max;
321+
var min = Queries.MSSQLQueries.TestDB.ScalarQueries.Min;
322+
var sum = Queries.MSSQLQueries.TestDB.ScalarQueries.Sum;
323+
var avg = Queries.MSSQLQueries.TestDB.ScalarQueries.Avg;
324+
var singleValueSelect = Queries.MSSQLQueries.TestDB.ScalarQueries.Single_Value_Select;
325+
326+
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
327+
328+
var count = dbContext.ExecuteScalar(countOfRecords);
329+
Assert.AreEqual("12", count);
330+
var maxValue = dbContext.ExecuteScalar(max);
331+
Assert.AreEqual("10000.00", maxValue);
332+
var minValue = dbContext.ExecuteScalar(min);
333+
Assert.AreEqual("3000.00", minValue);
334+
var sumValue = dbContext.ExecuteScalar(sum);
335+
Assert.AreEqual("161000.00", sumValue);
336+
var avgValue = dbContext.ExecuteScalar(avg);
337+
Assert.AreEqual("6520.000000", avgValue);
338+
var singleValue = dbContext.ExecuteScalar(singleValueSelect);
339+
Assert.AreEqual("2", singleValue);
340+
}
341+
342+
[TestMethod]
343+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
344+
public void Test_MSSQL_ExecuteScalar_As_StringReturn_DefaultValue()
345+
{
346+
var noValueReturned = Queries.MSSQLQueries.TestDB.ScalarQueries.No_Value_Returned;
347+
var dBNullValue = Queries.MSSQLQueries.TestDB.ScalarQueries.DB_Null_Value;
348+
349+
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
350+
351+
var result = dbContext.ExecuteScalar(noValueReturned);
352+
Assert.IsInstanceOfType<string>(result);
353+
Assert.AreEqual("", result);
354+
355+
result = dbContext.ExecuteScalar(dBNullValue);
356+
Assert.IsInstanceOfType<string>(result);
357+
Assert.AreEqual(string.Empty, result);
358+
}
359+
360+
[TestMethod]
361+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
362+
public void Test_MSSQL_ExecuteScalar_As_StringReturn_UnsupportedCommands()
363+
{
364+
var sqlStatements = new List<string>
365+
{
366+
Queries.MSSQLQueries.TestDB.DDL.Create_Table,
367+
Queries.MSSQLQueries.TestDB.DDL.Alter_Table,
368+
Queries.MSSQLQueries.TestDB.DDL.Comment_Table,
369+
Queries.MSSQLQueries.TestDB.DDL.Truncate_Table,
370+
Queries.MSSQLQueries.TestDB.DDL.Drop_Table,
371+
372+
Queries.MSSQLQueries.TestDB.DML.InsertSql,
373+
Queries.MSSQLQueries.TestDB.DML.UpdateSql,
374+
Queries.MSSQLQueries.TestDB.DML.DeleteSql,
375+
376+
Queries.MSSQLQueries.TestDB.DCL.GrantSql_Command_Table_User,
377+
Queries.MSSQLQueries.TestDB.DCL.RevokeSql_Command_Table_User
378+
};
379+
380+
foreach (var sqlStatement in sqlStatements)
381+
{
382+
try
383+
{
384+
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
385+
dbContext.ExecuteScalar(sqlStatement);
386+
Assert.Fail("No Exception");
387+
}
388+
catch (QueryDBException ex)
389+
{
390+
Assert.AreEqual("Only SELECT queries are supported here.", ex.Message);
391+
Assert.AreEqual("UnsupportedCommand", ex.ErrorType);
392+
Assert.AreEqual("'ExecuteScalar' only supports SELECT queries that have a scalar (single value) return.", ex.AdditionalInfo);
393+
}
394+
}
395+
}
396+
397+
#endregion
398+
399+
#region Execute Scalar Tests - << T ExecuteScalar<T>(string sqlStatement); >>
400+
401+
[TestMethod]
402+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
403+
public void Test_MSSQL_ExecuteScalar_As_TypedReturn_Scalar_Queries()
404+
{
405+
var countOfRecords = Queries.MSSQLQueries.TestDB.ScalarQueries.Count_Of_Records;
406+
var max = Queries.MSSQLQueries.TestDB.ScalarQueries.Max;
407+
var min = Queries.MSSQLQueries.TestDB.ScalarQueries.Min;
408+
var sum = Queries.MSSQLQueries.TestDB.ScalarQueries.Sum;
409+
var avg = Queries.MSSQLQueries.TestDB.ScalarQueries.Avg;
410+
var singleValueSelect = Queries.MSSQLQueries.TestDB.ScalarQueries.Single_Value_Select;
411+
412+
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
413+
414+
var count = dbContext.ExecuteScalar<int>(countOfRecords);
415+
Assert.AreEqual(12, count);
416+
var maxValue = dbContext.ExecuteScalar<float>(max);
417+
Assert.AreEqual(10000.00, maxValue);
418+
var minValue = dbContext.ExecuteScalar<float>(min);
419+
Assert.AreEqual(3000.00, minValue);
420+
var sumValue = dbContext.ExecuteScalar<float>(sum);
421+
Assert.AreEqual(161000.00, sumValue);
422+
var avgValue = dbContext.ExecuteScalar<decimal>(avg);
423+
Assert.AreEqual((decimal)6520.000000, avgValue);
424+
var singleValue = dbContext.ExecuteScalar<string>(singleValueSelect);
425+
Assert.AreEqual("2", singleValue);
426+
}
427+
428+
[TestMethod]
429+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
430+
public void Test_MSSQL_ExecuteScalar_As_TypedReturn_DefaultValue()
431+
{
432+
var dBNullValue = Queries.MSSQLQueries.TestDB.ScalarQueries.DB_Null_Value;
433+
434+
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
435+
436+
dynamic result = dbContext.ExecuteScalar<int>(dBNullValue);
437+
Assert.IsInstanceOfType<int>(result);
438+
Assert.AreEqual(default(int), result);
439+
440+
result = dbContext.ExecuteScalar<long>(dBNullValue);
441+
Assert.IsInstanceOfType<long>(result);
442+
Assert.AreEqual(default(long), result);
443+
444+
result = dbContext.ExecuteScalar<short>(dBNullValue);
445+
Assert.IsInstanceOfType<short>(result);
446+
Assert.AreEqual(default(short), result);
447+
448+
result = dbContext.ExecuteScalar<uint>(dBNullValue);
449+
Assert.IsInstanceOfType<uint>(result);
450+
Assert.AreEqual(default(uint), result);
451+
452+
result = dbContext.ExecuteScalar<ulong>(dBNullValue);
453+
Assert.IsInstanceOfType<ulong>(result);
454+
Assert.AreEqual(default(ulong), result);
455+
456+
result = dbContext.ExecuteScalar<ushort>(dBNullValue);
457+
Assert.IsInstanceOfType<ushort>(result);
458+
Assert.AreEqual(default(ushort), result);
459+
460+
result = dbContext.ExecuteScalar<decimal>(dBNullValue);
461+
Assert.IsInstanceOfType<decimal>(result);
462+
Assert.AreEqual(default(decimal), result);
463+
464+
result = dbContext.ExecuteScalar<double>(dBNullValue);
465+
Assert.IsInstanceOfType<double>(result);
466+
Assert.AreEqual(default(double), result);
467+
468+
result = dbContext.ExecuteScalar<float>(dBNullValue);
469+
Assert.IsInstanceOfType<float>(result);
470+
Assert.AreEqual(default(float), result);
471+
472+
result = dbContext.ExecuteScalar<byte>(dBNullValue);
473+
Assert.IsInstanceOfType<byte>(result);
474+
Assert.AreEqual(default(byte), result);
475+
476+
result = dbContext.ExecuteScalar<bool>(dBNullValue);
477+
Assert.IsInstanceOfType<bool>(result);
478+
Assert.AreEqual(default(bool), result);
479+
480+
result = dbContext.ExecuteScalar<DateTime>(dBNullValue);
481+
Assert.IsInstanceOfType<DateTime>(result);
482+
Assert.AreEqual(default(DateTime), result);
483+
484+
result = dbContext.ExecuteScalar<Guid>(dBNullValue);
485+
Assert.IsInstanceOfType<Guid>(result);
486+
Assert.AreEqual(default(Guid), result);
487+
488+
result = dbContext.ExecuteScalar<string>(dBNullValue);
489+
Assert.IsNull(result);
490+
Assert.AreEqual(default(string), result);
491+
492+
result = dbContext.ExecuteScalar<int?>(dBNullValue);
493+
Assert.IsNull(result);
494+
Assert.AreEqual(default(int?), result);
495+
496+
result = dbContext.ExecuteScalar<long?>(dBNullValue);
497+
Assert.IsNull(result);
498+
Assert.AreEqual(default(long?), result);
499+
500+
result = dbContext.ExecuteScalar<short?>(dBNullValue);
501+
Assert.IsNull(result);
502+
Assert.AreEqual(default(short?), result);
503+
504+
result = dbContext.ExecuteScalar<decimal?>(dBNullValue);
505+
Assert.IsNull(result);
506+
Assert.AreEqual(default(decimal?), result);
507+
508+
result = dbContext.ExecuteScalar<double?>(dBNullValue);
509+
Assert.IsNull(result);
510+
Assert.AreEqual(default(double?), result);
511+
512+
result = dbContext.ExecuteScalar<float?>(dBNullValue);
513+
Assert.IsNull(result);
514+
Assert.AreEqual(default(float?), result);
515+
516+
result = dbContext.ExecuteScalar<bool?>(dBNullValue);
517+
Assert.IsNull(result);
518+
Assert.AreEqual(default(bool?), result);
519+
520+
result = dbContext.ExecuteScalar<DateTime?>(dBNullValue);
521+
Assert.IsNull(result);
522+
Assert.AreEqual(default(DateTime?), result);
523+
}
524+
525+
[TestMethod]
526+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
527+
public void Test_MSSQL_ExecuteScalar_As_TypedReturn_UnsupportedCommands()
528+
{
529+
var sqlStatements = new List<string>
530+
{
531+
Queries.MSSQLQueries.TestDB.DDL.Create_Table,
532+
Queries.MSSQLQueries.TestDB.DDL.Alter_Table,
533+
Queries.MSSQLQueries.TestDB.DDL.Comment_Table,
534+
Queries.MSSQLQueries.TestDB.DDL.Truncate_Table,
535+
Queries.MSSQLQueries.TestDB.DDL.Drop_Table,
536+
537+
Queries.MSSQLQueries.TestDB.DML.InsertSql,
538+
Queries.MSSQLQueries.TestDB.DML.UpdateSql,
539+
Queries.MSSQLQueries.TestDB.DML.DeleteSql,
540+
541+
Queries.MSSQLQueries.TestDB.DCL.GrantSql_Command_Table_User,
542+
Queries.MSSQLQueries.TestDB.DCL.RevokeSql_Command_Table_User
543+
};
544+
545+
foreach (var sqlStatement in sqlStatements)
546+
{
547+
try
548+
{
549+
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
550+
dbContext.ExecuteScalar<string>(sqlStatement);
551+
Assert.Fail("No Exception");
552+
}
553+
catch (QueryDBException ex)
554+
{
555+
Assert.AreEqual("Only SELECT queries are supported here.", ex.Message);
556+
Assert.AreEqual("UnsupportedCommand", ex.ErrorType);
557+
Assert.AreEqual("'ExecuteScalar' only supports SELECT queries that have a scalar (single value) return.", ex.AdditionalInfo);
558+
}
559+
}
560+
}
561+
562+
#endregion
563+
313564
#region Execute Command Tests - << int ExecuteCommand(string sqlStatement) >>
314565

315566
[TestMethod]

0 commit comments

Comments
 (0)