Mock json files

This commit is contained in:
Mike Phares 2023-01-13 19:59:33 -07:00
parent c292328abe
commit 4185d159c4
26 changed files with 647 additions and 104 deletions

View File

@ -29,20 +29,6 @@ public class MetrologyRepository : IMetrologyRepository
protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) =>
DbProviderFactories.GetFactory(conn.GetType().Namespace); DbProviderFactories.GetFactory(conn.GetType().Namespace);
public bool IsTestDatabase()
{
int c = 0;
using (DbConnection conn = GetDbConnection())
{
c = conn.Query<int>(
"SELECT COUNT(*) " +
"FROM Configuration " +
"WHERE KeyName = 'TestDatabase' " +
"AND ValueString = '1'").FirstOrDefault();
}
return c > 0;
}
public TransactionScope StartTransaction() => new(); public TransactionScope StartTransaction() => new();
protected void CacheItem(string key, object v) protected void CacheItem(string key, object v)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
["application/json","/api/inbound","D:\\Metrology\\MetrologyAPILogs","\\\\messv02ecc1.ec.local\\EC_Metrology_Si\\MetrologyAttachments","1","Infineon Technologies Americas Corp.","Data Source=MESSAD1001\\TEST1,59583;Integrated Security=True;Initial Catalog=Metrology;","1234567","","True","False","OI_Metrology_Viewer_IFX","auc","Data Source=MESSAD1001\\TEST1,59583;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;","\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\Data","https://localhost:7130;http://localhost:5126","IFXApps"]

View File

@ -0,0 +1 @@
1-1234567

View File

@ -0,0 +1 @@
["remoteIpAddress"]

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,89 @@
{
"Results": [
{
"Column": "ID",
"Value": "1"
},
{
"Column": "InsertDate",
"Value": "9/12/2019 4:02:17 PM"
},
{
"Column": "Title",
"Value": "Bio-RadQS400MEPI_99-999999-9999.1_201909121559040648"
},
{
"Column": "Recipe",
"Value": "6in_thick"
},
{
"Column": "Date",
"Value": "9/12/2019 3:59:05 PM"
},
{
"Column": "Operator",
"Value": ""
},
{
"Column": "Batch",
"Value": "BIORAD #4"
},
{
"Column": "Cassette",
"Value": ""
},
{
"Column": "Wafer",
"Value": "99-999999-9999.1"
},
{
"Column": "Mean Thickness",
"Value": "114.785"
},
{
"Column": "RV Thickness",
"Value": "0.0000"
},
{
"Column": "Status",
"Value": "PASS"
},
{
"Column": "Std Dev",
"Value": "1.1047"
},
{
"Column": "SentToMetrology",
"Value": "True"
},
{
"Column": "SentToSPC",
"Value": "False"
},
{
"Column": "Reactor",
"Value": "99"
},
{
"Column": "RDS",
"Value": "999999"
},
{
"Column": "PSN",
"Value": "9999"
},
{
"Column": "Path",
"Value": ""
},
{
"Column": "Layer",
"Value": "1"
},
{
"Column": "Zone",
"Value": ""
}
],
"TotalRows": 21
}

View File

@ -0,0 +1,21 @@
{
"Results": [
{
"ID": 2,
"InsertDate": "2019-09-12T16:24:18.617",
"AttachmentID": "00000000-0000-0000-0000-000000000000",
"Title": "Bio-RadQS400MEPI_99-999999-9999.1_201909121623333616",
"Recipe": null,
"Date": "2019-09-12T16:23:43"
},
{
"ID": 1,
"InsertDate": "2019-09-12T16:02:17.253",
"AttachmentID": "00000000-0000-0000-0000-000000000000",
"Title": "Bio-RadQS400MEPI_99-999999-9999.1_201909121559040648",
"Recipe": null,
"Date": "2019-09-12T15:59:05"
}
],
"TotalRows": 2
}

View File

@ -0,0 +1 @@
{"Results":[{"Batch":"BIORAD #4","Cassette":"","Date":"2019-09-12T16:23:43","ID":2,"InsertDate":"2019-09-12T16:24:18.617","Layer":"1","Mean Thickness":"114.785","Operator":"","Path":null,"PSN":"9999","RDS":"999999","Reactor":"99","Recipe":"6in_thick","RV Thickness":"0.0000","SentToMetrology":false,"SentToSPC":false,"Status":"PASS","Std Dev":"1.1047","Title":"Bio-RadQS400MEPI_99-999999-9999.1_201909121623333616","Wafer":"99-999999-9999.1","Zone":null,"AttachmentID":null},{"Batch":"BIORAD #4","Cassette":"","Date":"2019-09-12T15:59:05","ID":1,"InsertDate":"2019-09-12T16:02:17.253","Layer":"1","Mean Thickness":"114.785","Operator":"","Path":null,"PSN":"9999","RDS":"999999","Reactor":"99","Recipe":"6in_thick","RV Thickness":"0.0000","SentToMetrology":true,"SentToSPC":false,"Status":"PASS","Std Dev":"1.1047","Title":"Bio-RadQS400MEPI_99-999999-9999.1_201909121559040648","Wafer":"99-999999-9999.1","Zone":null,"AttachmentID":null}],"TotalRows":2}

View File

View File

@ -0,0 +1,334 @@
{
"Results": {
"ToolType": {
"ID": 1,
"ToolTypeName": "BioRad",
"HasHeaderAttachments": false,
"HasDataAttachments": false,
"HeaderTableName": "BioRadRunHeader",
"DataTableName": "BioRadRunData",
"ExportSPName": "Export_BioRad",
"HeaderGridAttributes": null,
"DataGridAttributes": null,
"DataGridSortBy": "LEN(Position), Position",
"DataGridStatsColumn": "Thickness",
"DataGridStatsStdDevType": " ",
"DisplayHeaderAttachment": null,
"DisplayDataAttachment": null,
"OIExportSPName": "OIExport_BioRad"
},
"Metadata": [
{
"ToolTypeID": 1,
"Header": false,
"ApiName": null,
"ColumnName": "ID",
"DisplayTitle": "ID",
"GridDisplayOrder": 3,
"GridAttributes": "{ \u0022dataType\u0022: \u0022number\u0022, \u0022hidden\u0022: \u0022true\u0022 }",
"TableDisplayOrder": 1
},
{
"ToolTypeID": 1,
"Header": false,
"ApiName": null,
"ColumnName": "InsertDate",
"DisplayTitle": "InsertDate",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 2
},
{
"ToolTypeID": 1,
"Header": false,
"ApiName": "Position",
"ColumnName": "Position",
"DisplayTitle": "Position",
"GridDisplayOrder": 1,
"GridAttributes": null,
"TableDisplayOrder": 4
},
{
"ToolTypeID": 1,
"Header": false,
"ApiName": "HeaderUniqueId",
"ColumnName": "Run Header",
"DisplayTitle": "Run Header",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 6
},
{
"ToolTypeID": 1,
"Header": false,
"ApiName": "Thickness",
"ColumnName": "Thickness",
"DisplayTitle": "Thickness",
"GridDisplayOrder": 2,
"GridAttributes": null,
"TableDisplayOrder": 5
},
{
"ToolTypeID": 1,
"Header": false,
"ApiName": "UniqueId",
"ColumnName": "Title",
"DisplayTitle": "Title",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 3
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Batch",
"ColumnName": "Batch",
"DisplayTitle": "Batch",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 7
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Cassette",
"ColumnName": "Cassette",
"DisplayTitle": "Cassette",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 8
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Date",
"ColumnName": "Date",
"DisplayTitle": "Date",
"GridDisplayOrder": 1,
"GridAttributes": "{ \u0022dataType\u0022: \u0022date\u0022, \u0022format\u0022: \u0022dateTime\u0022 }",
"TableDisplayOrder": 5
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": null,
"ColumnName": "ID",
"DisplayTitle": "ID",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 1
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": null,
"ColumnName": "InsertDate",
"DisplayTitle": "InsertDate",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 2
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Layer",
"ColumnName": "Layer",
"DisplayTitle": "Layer",
"GridDisplayOrder": 5,
"GridAttributes": null,
"TableDisplayOrder": 20
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "MeanThickness",
"ColumnName": "Mean Thickness",
"DisplayTitle": "Mean Thickness",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 10
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Op",
"ColumnName": "Operator",
"DisplayTitle": "Operator",
"GridDisplayOrder": 8,
"GridAttributes": null,
"TableDisplayOrder": 6
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "FilePath",
"ColumnName": "Path",
"DisplayTitle": "Path",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 19
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "PSN",
"ColumnName": "PSN",
"DisplayTitle": "PSN",
"GridDisplayOrder": 4,
"GridAttributes": null,
"TableDisplayOrder": 18
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "RDS",
"ColumnName": "RDS",
"DisplayTitle": "RDS",
"GridDisplayOrder": 3,
"GridAttributes": null,
"TableDisplayOrder": 17
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Reactor",
"ColumnName": "Reactor",
"DisplayTitle": "Reactor",
"GridDisplayOrder": 2,
"GridAttributes": null,
"TableDisplayOrder": 16
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Recipe",
"ColumnName": "Recipe",
"DisplayTitle": "Recipe",
"GridDisplayOrder": 7,
"GridAttributes": null,
"TableDisplayOrder": 4
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "RVThickness",
"ColumnName": "RV Thickness",
"DisplayTitle": "RV Thickness",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 11
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "SentToMetrology",
"ColumnName": "SentToMetrology",
"DisplayTitle": "SentToMetrology",
"GridDisplayOrder": 9,
"GridAttributes": "{ \u0022dataType:\u0022: \u0022bool\u0022, \u0022formatter\u0022: \u0022boolToYesNo\u0022 }",
"TableDisplayOrder": 14
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "SentToSPC",
"ColumnName": "SentToSPC",
"DisplayTitle": "SentToSPC",
"GridDisplayOrder": 10,
"GridAttributes": "{ \u0022dataType:\u0022: \u0022bool\u0022, \u0022formatter\u0022: \u0022boolToYesNo\u0022 }",
"TableDisplayOrder": 15
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "PassFail",
"ColumnName": "Status",
"DisplayTitle": "Status",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 12
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "StdDev",
"ColumnName": "Std Dev",
"DisplayTitle": "Std Dev",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 13
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "UniqueId",
"ColumnName": "Title",
"DisplayTitle": "Title",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 3
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Wafer",
"ColumnName": "Wafer",
"DisplayTitle": "Wafer",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 9
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Zone",
"ColumnName": "Zone",
"DisplayTitle": "Zone",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 21
},
{
"ToolTypeID": 1,
"Header": false,
"ApiName": null,
"ColumnName": "AttachmentID",
"DisplayTitle": "AttachmentID",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 0
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": null,
"ColumnName": "AttachmentID",
"DisplayTitle": "AttachmentID",
"GridDisplayOrder": 0,
"GridAttributes": null,
"TableDisplayOrder": 0
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Id",
"ColumnName": null,
"DisplayTitle": "Ignore",
"GridDisplayOrder": -1,
"GridAttributes": null,
"TableDisplayOrder": -1
},
{
"ToolTypeID": 1,
"Header": true,
"ApiName": "Title",
"ColumnName": null,
"DisplayTitle": "Ignore",
"GridDisplayOrder": -1,
"GridAttributes": null,
"TableDisplayOrder": -1
}
]
},
"TotalRows": 31
}

View File

@ -0,0 +1,29 @@
{
"Results": [
{
"ToolTypeName": "BioRad",
"ID": 1
},
{
"ToolTypeName": "CDE",
"ID": 2
},
{
"ToolTypeName": "Tencor",
"ID": 3
},
{
"ToolTypeName": "MercuryProbe",
"ID": 4
},
{
"ToolTypeName": "StratusBioRad",
"ID": 5
},
{
"ToolTypeName": "TencorSP1",
"ID": 6
}
],
"TotalRows": 6
}

View File

@ -13,6 +13,7 @@ public record AppSettings(string ApiLoggingContentTypes,
string InboundApiAllowedIPList, string InboundApiAllowedIPList,
bool IsDevelopment, bool IsDevelopment,
bool IsStaging, bool IsStaging,
string MockRoot,
string MonAResource, string MonAResource,
string MonASite, string MonASite,
string OI2SqlConnectionString, string OI2SqlConnectionString,

View File

@ -19,6 +19,7 @@ public class AppSettings
[Display(Name = "Inbound Api Allowed IP List"), Required] public string InboundApiAllowedIPList { get; set; } [Display(Name = "Inbound Api Allowed IP List"), Required] public string InboundApiAllowedIPList { get; set; }
[Display(Name = "Is Development"), Required] public bool? IsDevelopment { get; set; } [Display(Name = "Is Development"), Required] public bool? IsDevelopment { get; set; }
[Display(Name = "Is Staging"), Required] public bool? IsStaging { get; set; } [Display(Name = "Is Staging"), Required] public bool? IsStaging { get; set; }
[Display(Name = "Mock Root"), Required] public string MockRoot { get; set; }
[Display(Name = "MonA Resource"), Required] public string MonAResource { get; set; } [Display(Name = "MonA Resource"), Required] public string MonAResource { get; set; }
[Display(Name = "MonA Site"), Required] public string MonASite { get; set; } [Display(Name = "MonA Site"), Required] public string MonASite { get; set; }
[Display(Name = "Oi 2 Sql Connection String"), Required] public string Oi2SqlConnectionString { get; set; } [Display(Name = "Oi 2 Sql Connection String"), Required] public string Oi2SqlConnectionString { get; set; }
@ -61,6 +62,8 @@ public class AppSettings
throw new NullReferenceException(nameof(IsDevelopment)); throw new NullReferenceException(nameof(IsDevelopment));
if (appSettings.IsStaging is null) if (appSettings.IsStaging is null)
throw new NullReferenceException(nameof(IsStaging)); throw new NullReferenceException(nameof(IsStaging));
if (appSettings.MockRoot is null)
throw new NullReferenceException(nameof(MockRoot));
if (appSettings.MonAResource is null) if (appSettings.MonAResource is null)
throw new NullReferenceException(nameof(MonAResource)); throw new NullReferenceException(nameof(MonAResource));
if (appSettings.MonASite is null) if (appSettings.MonASite is null)
@ -85,6 +88,7 @@ public class AppSettings
appSettings.InboundApiAllowedIPList, appSettings.InboundApiAllowedIPList,
appSettings.IsDevelopment.Value, appSettings.IsDevelopment.Value,
appSettings.IsStaging.Value, appSettings.IsStaging.Value,
appSettings.MockRoot,
appSettings.MonAResource, appSettings.MonAResource,
appSettings.MonASite, appSettings.MonASite,
appSettings.Oi2SqlConnectionString, appSettings.Oi2SqlConnectionString,

View File

@ -64,5 +64,38 @@
<None Include="Data\Mike\service-shop.json"> <None Include="Data\Mike\service-shop.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Include="Data\Tests\GetAllServiceShopOrdersApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetToolTypeMetadataApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetDataApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetHeaderFieldsApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetHeadersApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetHeaderTitlesApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetAppSettingsApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\IndexApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetClientSettingsApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetBuildNumberAndGitCommitSevenApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Data\Tests\GetIpAddressApi.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -69,11 +69,11 @@ public class Program
_ = webApplicationBuilder.Services.AddSingleton(_ => appSettings); _ = webApplicationBuilder.Services.AddSingleton(_ => appSettings);
_ = webApplicationBuilder.Services.AddSingleton<IInboundRepository, InboundRepository>(); _ = webApplicationBuilder.Services.AddSingleton<IInboundRepository, InboundRepository>();
_ = webApplicationBuilder.Services.AddSingleton<IToolTypesRepository, ToolTypesRepository>();
_ = webApplicationBuilder.Services.AddSingleton<IDbConnectionFactory, SQLDbConnectionFactory>(); _ = webApplicationBuilder.Services.AddSingleton<IDbConnectionFactory, SQLDbConnectionFactory>();
_ = webApplicationBuilder.Services.AddSingleton<IAppSettingsRepository>(_ => appSettingsRepository); _ = webApplicationBuilder.Services.AddSingleton<IAppSettingsRepository>(_ => appSettingsRepository);
_ = webApplicationBuilder.Services.AddSingleton<IClientSettingsRepository>(_ => clientSettingsRepository); _ = webApplicationBuilder.Services.AddSingleton<IClientSettingsRepository>(_ => clientSettingsRepository);
_ = webApplicationBuilder.Services.AddSingleton<IServiceShopOrderRepository, ServiceShopOrderRepository>(); _ = webApplicationBuilder.Services.AddSingleton<IServiceShopOrderRepository, ServiceShopOrderRepository>();
_ = webApplicationBuilder.Services.AddSingleton<IToolTypesRepository, ToolTypesRepository>(_ => new(appSettings.MockRoot));
_ = webApplicationBuilder.Services.AddScoped<IAttachmentsService, AttachmentsService>(); _ = webApplicationBuilder.Services.AddScoped<IAttachmentsService, AttachmentsService>();
_ = webApplicationBuilder.Services.AddScoped<IInboundDataService, InboundDataService>(); _ = webApplicationBuilder.Services.AddScoped<IInboundDataService, InboundDataService>();

View File

@ -28,20 +28,6 @@ public class MetrologyRepository : IMetrologyRepository
protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) =>
DbProviderFactories.GetFactory(conn.GetType().Namespace); DbProviderFactories.GetFactory(conn.GetType().Namespace);
public bool IsTestDatabase()
{
int c = 0;
using (DbConnection conn = GetDbConnection())
{
c = conn.Query<int>(
"SELECT COUNT(*) " +
"FROM Configuration " +
"WHERE KeyName = 'TestDatabase' " +
"AND ValueString = '1'").FirstOrDefault();
}
return c > 0;
}
public TransactionScope StartTransaction() => new(); public TransactionScope StartTransaction() => new();
protected void CacheItem(string key, object v) protected void CacheItem(string key, object v)

View File

@ -2,31 +2,58 @@ using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Models.Stateless;
using OI.Metrology.Shared.Services; using OI.Metrology.Shared.Services;
using System.Data; using System.Data;
using System.Text.Json;
namespace OI.Metrology.Server.Repository; namespace OI.Metrology.Server.Repository;
public class ToolTypesRepository : IToolTypesRepository public class ToolTypesRepository : IToolTypesRepository
{ {
private readonly string _MockRoot;
private readonly Serilog.ILogger _Log; private readonly Serilog.ILogger _Log;
public ToolTypesRepository() => _Log = Serilog.Log.ForContext<ToolTypesRepository>(); public ToolTypesRepository(string mockRoot)
{
_MockRoot = mockRoot;
_Log = Serilog.Log.ForContext<ToolTypesRepository>();
}
// Get a list of tooltypes, returns just Name and ID // Get a list of tooltypes, returns just Name and ID
Result<ToolTypeNameId[]> IToolTypesRepository.Index(IMetrologyRepository metrologyRepository) Result<ToolTypeNameId[]> IToolTypesRepository.Index(IMetrologyRepository metrologyRepository)
{
Result<ToolTypeNameId[]>? r;
if (!string.IsNullOrEmpty(_MockRoot))
{
string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), "IndexApi.json"));
r = JsonSerializer.Deserialize<Result<ToolTypeNameId[]>>(json);
if (r is null)
throw new NullReferenceException(nameof(r));
}
else
{ {
ToolTypeNameId[] toolTypeNameIdCollection = metrologyRepository.GetToolTypes().Select(tt => new ToolTypeNameId() { ToolTypeName = tt.ToolTypeName, ID = tt.ID }).ToArray(); ToolTypeNameId[] toolTypeNameIdCollection = metrologyRepository.GetToolTypes().Select(tt => new ToolTypeNameId() { ToolTypeName = tt.ToolTypeName, ID = tt.ID }).ToArray();
Result<ToolTypeNameId[]> r = new() r = new()
{ {
Results = toolTypeNameIdCollection, Results = toolTypeNameIdCollection,
TotalRows = toolTypeNameIdCollection.Length, TotalRows = toolTypeNameIdCollection.Length,
}; };
}
return r; return r;
} }
// Gets the metadata for a tooltype, accepts a parameter which sorts the results // Gets the metadata for a tooltype, accepts a parameter which sorts the results
// This is used to setup the grid displays on the UI // This is used to setup the grid displays on the UI
Result<ToolTypeMetadataResult> IToolTypesRepository.GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby) Result<ToolTypeMetadataResult> IToolTypesRepository.GetToolTypeMetadata(IMetrologyRepository metrologyRepository, int id, string sortby)
{
Result<ToolTypeMetadataResult>? r;
if (!string.IsNullOrEmpty(_MockRoot))
{
string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), "GetToolTypeMetadataApi.json"));
r = JsonSerializer.Deserialize<Result<ToolTypeMetadataResult>>(json);
if (r is null)
throw new NullReferenceException(nameof(r));
}
else
{ {
ToolType tt = metrologyRepository.GetToolTypeByID(id); ToolType tt = metrologyRepository.GetToolTypeByID(id);
IEnumerable<ToolTypeMetadata> md = metrologyRepository.GetToolTypeMetadataByToolTypeID(id); IEnumerable<ToolTypeMetadata> md = metrologyRepository.GetToolTypeMetadataByToolTypeID(id);
@ -38,62 +65,107 @@ public class ToolTypesRepository : IToolTypesRepository
ToolTypeMetadataResult toolTypeMetadataResult = new(tt, md.ToArray()); ToolTypeMetadataResult toolTypeMetadataResult = new(tt, md.ToArray());
int totalRows = toolTypeMetadataResult.Metadata is not null ? toolTypeMetadataResult.Metadata.Length : 0; int totalRows = toolTypeMetadataResult.Metadata is not null ? toolTypeMetadataResult.Metadata.Length : 0;
Result<ToolTypeMetadataResult> r = new() r = new()
{ {
Results = toolTypeMetadataResult, Results = toolTypeMetadataResult,
TotalRows = totalRows, TotalRows = totalRows,
}; };
}
return r; return r;
} }
// Gets headers, request/response format is to allow paging with igniteUI // Gets headers, request/response format is to allow paging with igniteUI
// The headerid parameter is used for navigating directly to a header, when the button is clicked in Awaiting Dispo // The headerid parameter is used for navigating directly to a header, when the button is clicked in Awaiting Dispo
Result<DataTable> IToolTypesRepository.GetHeaders(IMetrologyRepository metrologyRepository, int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid) Result<DataTable> IToolTypesRepository.GetHeaders(IMetrologyRepository metrologyRepository, int id, DateTime? datebegin, DateTime? dateend, int? page, int? pagesize, long? headerid)
{
Result<DataTable>? r;
if (!string.IsNullOrEmpty(_MockRoot))
{
string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), "GetHeadersApi.json"));
r = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
if (r is null)
throw new NullReferenceException(nameof(r));
}
else
{ {
long totalRecs; long totalRecs;
DataTable dataTable = metrologyRepository.GetHeaders(id, datebegin, dateend, page, pagesize, headerid, out totalRecs); DataTable dataTable = metrologyRepository.GetHeaders(id, datebegin, dateend, page, pagesize, headerid, out totalRecs);
Result<DataTable> r = new() r = new()
{ {
Results = dataTable, Results = dataTable,
TotalRows = totalRecs, TotalRows = totalRecs,
}; };
}
return r; return r;
} }
// Gets header titles, used in the Run Headers UI // Gets header titles, used in the Run Headers UI
Result<HeaderCommon[]> IToolTypesRepository.GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize) Result<HeaderCommon[]> IToolTypesRepository.GetHeaderTitles(IMetrologyRepository metrologyRepository, int id, int? page, int? pagesize)
{
Result<HeaderCommon[]>? r;
if (!string.IsNullOrEmpty(_MockRoot))
{
string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), "GetHeaderTitlesApi.json"));
r = JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json);
if (r is null)
throw new NullReferenceException(nameof(r));
}
else
{ {
long totalRecs; long totalRecs;
HeaderCommon[] headerCommonCollection = metrologyRepository.GetHeaderTitles(id, page, pagesize, out totalRecs).ToArray(); HeaderCommon[] headerCommonCollection = metrologyRepository.GetHeaderTitles(id, page, pagesize, out totalRecs).ToArray();
Result<HeaderCommon[]> r = new() r = new()
{ {
Results = headerCommonCollection, Results = headerCommonCollection,
TotalRows = totalRecs, TotalRows = totalRecs,
}; };
}
return r; return r;
} }
// Get all of the fields for a header, used with the Run Header UI // Get all of the fields for a header, used with the Run Header UI
Result<ColumnValue[]> IToolTypesRepository.GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid) Result<ColumnValue[]> IToolTypesRepository.GetHeaderFields(IMetrologyRepository metrologyRepository, int id, long headerid)
{
Result<ColumnValue[]>? r;
if (!string.IsNullOrEmpty(_MockRoot))
{
string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), "GetHeaderFieldsApi.json"));
r = JsonSerializer.Deserialize<Result<ColumnValue[]>>(json);
if (r is null)
throw new NullReferenceException(nameof(r));
}
else
{ {
ColumnValue[] columnValueCollection = metrologyRepository.GetHeaderFields(id, headerid).Select(x => new ColumnValue() { Column = x.Key, Value = x.Value }).ToArray(); ColumnValue[] columnValueCollection = metrologyRepository.GetHeaderFields(id, headerid).Select(x => new ColumnValue() { Column = x.Key, Value = x.Value }).ToArray();
Result<ColumnValue[]> r = new() r = new()
{ {
Results = columnValueCollection, Results = columnValueCollection,
TotalRows = columnValueCollection.Length, TotalRows = columnValueCollection.Length,
}; };
}
return r; return r;
} }
// Get the data for a header, used with the Run Info UI // Get the data for a header, used with the Run Info UI
Result<DataTable> IToolTypesRepository.GetData(IMetrologyRepository metrologyRepository, int id, long headerid) Result<DataTable> IToolTypesRepository.GetData(IMetrologyRepository metrologyRepository, int id, long headerid)
{
Result<DataTable>? r;
if (!string.IsNullOrEmpty(_MockRoot))
{
string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), "GetDataApi.json"));
r = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
if (r is null)
throw new NullReferenceException(nameof(r));
}
else
{ {
DataTable dataTable = metrologyRepository.GetData(id, headerid); DataTable dataTable = metrologyRepository.GetData(id, headerid);
Result<DataTable> r = new() r = new()
{ {
Results = dataTable, Results = dataTable,
TotalRows = dataTable.Rows.Count, TotalRows = dataTable.Rows.Count,
}; };
}
return r; return r;
} }

View File

@ -1,6 +1,7 @@
{ {
"ConnectionString": "Data Source=MESSAD1001\\TEST1,59583;Integrated Security=True;Initial Catalog=Metrology;", "ConnectionString": "Data Source=MESSAD1001\\TEST1,59583;Integrated Security=True;Initial Catalog=Metrology;",
"IsDevelopment": true, "IsDevelopment": true,
"MockRoot": "/Data/Tests",
"MonAResource": "OI_Metrology_Viewer_IFX", "MonAResource": "OI_Metrology_Viewer_IFX",
"Oi2SqlConnectionString": "Data Source=MESSAD1001\\TEST1,59583;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;", "Oi2SqlConnectionString": "Data Source=MESSAD1001\\TEST1,59583;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;",
"Serilog": { "Serilog": {

View File

@ -19,6 +19,7 @@
"InboundApiAllowedIPList": "", "InboundApiAllowedIPList": "",
"IsDevelopment": false, "IsDevelopment": false,
"IsStaging": false, "IsStaging": false,
"MockRoot": "",
"MonAResource": "OI_Metrology_Viewer_EC", "MonAResource": "OI_Metrology_Viewer_EC",
"MonASite": "auc", "MonASite": "auc",
"Oi2SqlConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;", "Oi2SqlConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;",

View File

@ -8,8 +8,6 @@ namespace OI.Metrology.Shared.Models.Stateless;
public interface IMetrologyRepository public interface IMetrologyRepository
{ {
bool IsTestDatabase();
IEnumerable<ToolType> GetToolTypes(); IEnumerable<ToolType> GetToolTypes();
ToolType GetToolTypeByName(string name); ToolType GetToolTypeByName(string name);
ToolType GetToolTypeByID(int id); ToolType GetToolTypeByID(int id);

View File

@ -67,10 +67,9 @@ public class UnitTestAppSettingsController
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString()); Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
string json = await httpResponseMessage.Content.ReadAsStringAsync(); string json = await httpResponseMessage.Content.ReadAsStringAsync();
httpClient.Dispose(); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetAppSettingsApi)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
Assert.IsTrue(json != "[]"); Assert.IsTrue(json != "[]");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }
@ -95,9 +94,8 @@ public class UnitTestAppSettingsController
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString()); Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
string json = await httpResponseMessage.Content.ReadAsStringAsync(); string json = await httpResponseMessage.Content.ReadAsStringAsync();
httpClient.Dispose(); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetBuildNumberAndGitCommitSevenApi)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }

View File

@ -57,10 +57,9 @@ public class UnitTestClientSettingsController
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString()); Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
string json = await httpResponseMessage.Content.ReadAsStringAsync(); string json = await httpResponseMessage.Content.ReadAsStringAsync();
httpClient.Dispose(); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetClientSettingsApi)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
Assert.IsTrue(json != "[]"); Assert.IsTrue(json != "[]");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }
@ -85,9 +84,8 @@ public class UnitTestClientSettingsController
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString()); Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
string json = await httpResponseMessage.Content.ReadAsStringAsync(); string json = await httpResponseMessage.Content.ReadAsStringAsync();
httpClient.Dispose(); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetIpAddressApi)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }

View File

@ -68,10 +68,10 @@ public class UnitTestServiceShopOrderController
_Logger.Information("Starting Web Application"); _Logger.Information("Starting Web Application");
string actionName = nameof(IServiceShopOrderController<object>.Action.All); string actionName = nameof(IServiceShopOrderController<object>.Action.All);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/{actionName}"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/{actionName}");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetAllServiceShopOrdersApi)}.json"), json);
ServiceShopOrder[]? serviceShopOrders = System.Text.Json.JsonSerializer.Deserialize<ServiceShopOrder[]>(json); ServiceShopOrder[]? serviceShopOrders = System.Text.Json.JsonSerializer.Deserialize<ServiceShopOrder[]>(json);
Assert.IsNotNull(serviceShopOrders); Assert.IsNotNull(serviceShopOrders);
Assert.IsTrue(serviceShopOrders.Any()); Assert.IsTrue(serviceShopOrders.Any());
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }

View File

@ -59,11 +59,11 @@ public class UnitTestToolTypesController
HttpClient httpClient = _WebApplicationFactory.CreateClient(); HttpClient httpClient = _WebApplicationFactory.CreateClient();
_Logger.Information("Starting Web Application"); _Logger.Information("Starting Web Application");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(IndexApi)}.json"), json);
Result<ToolTypeNameId[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeNameId[]>>(json); Result<ToolTypeNameId[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeNameId[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsTrue(result.Results.Any()); Assert.IsTrue(result.Results.Any());
Assert.IsFalse(result.Results.All(l => l.ID == 0)); Assert.IsFalse(result.Results.All(l => l.ID == 0));
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }
@ -88,12 +88,12 @@ public class UnitTestToolTypesController
HttpClient httpClient = _WebApplicationFactory.CreateClient(); HttpClient httpClient = _WebApplicationFactory.CreateClient();
_Logger.Information("Starting Web Application"); _Logger.Information("Starting Web Application");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetToolTypeMetadataApi)}.json"), json);
Result<ToolTypeMetadataResult>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeMetadataResult>>(json); Result<ToolTypeMetadataResult>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeMetadataResult>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Metadata); Assert.IsNotNull(result.Results.Metadata);
Assert.IsTrue(result.Results.Metadata.Any()); Assert.IsTrue(result.Results.Metadata.Any());
Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0)); Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0));
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }
@ -116,10 +116,10 @@ public class UnitTestToolTypesController
HttpClient httpClient = _WebApplicationFactory.CreateClient(); HttpClient httpClient = _WebApplicationFactory.CreateClient();
_Logger.Information("Starting Web Application"); _Logger.Information("Starting Web Application");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers");
Result<DataTable>? result = System.Text.Json.JsonSerializer.Deserialize<Result<DataTable>>(json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetHeadersApi)}.json"), json);
Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }
@ -142,10 +142,10 @@ public class UnitTestToolTypesController
HttpClient httpClient = _WebApplicationFactory.CreateClient(); HttpClient httpClient = _WebApplicationFactory.CreateClient();
_Logger.Information("Starting Web Application"); _Logger.Information("Starting Web Application");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headertitles"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headertitles");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetHeaderTitlesApi)}.json"), json);
Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json); Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsTrue(result.Results.Any()); Assert.IsTrue(result.Results.Any());
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }
@ -168,10 +168,10 @@ public class UnitTestToolTypesController
HttpClient httpClient = _WebApplicationFactory.CreateClient(); HttpClient httpClient = _WebApplicationFactory.CreateClient();
_Logger.Information("Starting Web Application"); _Logger.Information("Starting Web Application");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/fields"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/fields");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetHeaderFieldsApi)}.json"), json);
Result<ColumnValue[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ColumnValue[]>>(json); Result<ColumnValue[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ColumnValue[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsTrue(result.Results.Any()); Assert.IsTrue(result.Results.Any());
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }
@ -194,10 +194,10 @@ public class UnitTestToolTypesController
HttpClient httpClient = _WebApplicationFactory.CreateClient(); HttpClient httpClient = _WebApplicationFactory.CreateClient();
_Logger.Information("Starting Web Application"); _Logger.Information("Starting Web Application");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/data"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/data");
Result<DataTable>? result = System.Text.Json.JsonSerializer.Deserialize<Result<DataTable>>(json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{nameof(GetDataApi)}.json"), json);
Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_TestContext.ManagedMethod}.json"), json);
_Logger.Information($"{_TestContext?.TestName} completed"); _Logger.Information($"{_TestContext?.TestName} completed");
} }

View File

@ -28,20 +28,6 @@ public class MetrologyRepository : IMetrologyRepository
protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) =>
DbProviderFactories.GetFactory(conn.GetType().Namespace); DbProviderFactories.GetFactory(conn.GetType().Namespace);
public bool IsTestDatabase()
{
int c = 0;
using (DbConnection conn = GetDbConnection())
{
c = conn.Query<int>(
"SELECT COUNT(*) " +
"FROM Configuration " +
"WHERE KeyName = 'TestDatabase' " +
"AND ValueString = '1'").FirstOrDefault();
}
return c > 0;
}
public TransactionScope StartTransaction() => new(); public TransactionScope StartTransaction() => new();
protected void CacheItem(string key, object v) protected void CacheItem(string key, object v)