isList handling

This commit is contained in:
2021-11-30 19:09:22 +01:00
parent 2a3910a7cf
commit 8519da26a8
3 changed files with 47 additions and 11 deletions

View File

@ -15,6 +15,7 @@ namespace de.hottis.genericdatabaseapiservice.Services {
public class DbServiceException : Exception {} public class DbServiceException : Exception {}
public class NotDataFoundException : DbServiceException {} public class NotDataFoundException : DbServiceException {}
public class TooMuchDataFoundException : DbServiceException {}
public class DbService : IDbService { public class DbService : IDbService {
private readonly IConfiguration Configuration; private readonly IConfiguration Configuration;
@ -30,7 +31,7 @@ namespace de.hottis.genericdatabaseapiservice.Services {
Configuration["Database:Name"]); Configuration["Database:Name"]);
} }
async public Task<List<TOUT>> ReadBySelect<TIN, TOUT>(string selectStatement, TIN input) { async public Task<List<TOUT>> ReadBySelect<TIN, TOUT>(string selectStatement, bool justOne, TIN input) {
var itemList = new List<TOUT>(); var itemList = new List<TOUT>();
Console.WriteLine("ConnInfo: {0}", databaseConnInfo); Console.WriteLine("ConnInfo: {0}", databaseConnInfo);
@ -63,14 +64,12 @@ namespace de.hottis.genericdatabaseapiservice.Services {
var dma = (DataMemberAttribute)attributes[0]; var dma = (DataMemberAttribute)attributes[0];
int ordinal = reader.GetOrdinal(dma.Name); int ordinal = reader.GetOrdinal(dma.Name);
Console.WriteLine("Output DataMember name: {0} {1} {2} ", dma.Name, dma.TypeId, ordinal); Console.WriteLine("Output DataMember name: {0} {1} {2} ", dma.Name, dma.TypeId, ordinal);
if (propertyInfo.PropertyType == typeof(System.String)) { if (reader.IsDBNull(ordinal)) {
if (reader.IsDBNull(ordinal)) { propertyInfo.SetValue(item, null);
propertyInfo.SetValue(item, null); Console.WriteLine("Output Value: null");
Console.WriteLine("Output Value: null"); } else if (propertyInfo.PropertyType == typeof(System.String)) {
} else { propertyInfo.SetValue(item, reader.GetString(ordinal));
propertyInfo.SetValue(item, reader.GetString(ordinal)); Console.WriteLine("Output Value:{0}", reader.GetString(ordinal));
Console.WriteLine("Output Value:{0}", reader.GetString(ordinal));
}
} else if (propertyInfo.PropertyType == typeof(System.Int32)) { } else if (propertyInfo.PropertyType == typeof(System.Int32)) {
propertyInfo.SetValue(item, reader.GetInt32(ordinal)); propertyInfo.SetValue(item, reader.GetInt32(ordinal));
Console.WriteLine("Output Value:{0}", reader.GetInt32(ordinal)); Console.WriteLine("Output Value:{0}", reader.GetInt32(ordinal));
@ -85,6 +84,9 @@ namespace de.hottis.genericdatabaseapiservice.Services {
if (itemList.Count == 0) { if (itemList.Count == 0) {
throw new NotDataFoundException(); throw new NotDataFoundException();
} }
if (justOne && itemList.Count > 1) {
throw new TooMuchDataFoundException();
}
return itemList; return itemList;
} }

View File

@ -95,6 +95,36 @@ paths:
$ref: "#/components/schemas/productionOrder" $ref: "#/components/schemas/productionOrder"
404: 404:
description: No such productionOrder entries available description: No such productionOrder entries available
/pdb/v2/baseData/{articleNumber}:
get:
tags: [ "Regular" ]
operationId: Regular.baseData
summary: Returns baseData entries
description:
STATEMENTBEGIN
SELECT Artikelcode,
Art,
bezeichnung
FROM stammdaten
WHERE Artikelcode = @articleNumber
STATEMENTEND
parameters:
- name: articleNumber
in: path
required: true
schema:
type: string
responses:
200:
description: Here are your productionOrder items
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/productionOrder"
404:
description: No such productionOrder entries available
components: components:
schemas: schemas:

View File

@ -98,7 +98,7 @@ FROM $types[$operation['resultType']['apiName']]['sqlName']#slurp
#else #else
$operation['statement']#slurp $operation['statement']#slurp
#end if #end if
", #slurp ", $operation['isList'], #slurp
#if $operation['bodyInputType'] #if $operation['bodyInputType']
$operation['bodyInputType']['apiName']#slurp $operation['bodyInputType']['apiName']#slurp
#elif $operation['paramInputTypes'] #elif $operation['paramInputTypes']
@ -107,7 +107,11 @@ paramInput#slurp
null#slurp null#slurp
#end if #end if
); );
return new ObjectResult(res); return new ObjectResult(res#slurp
#if $operation['isList']
[0]#slurp
#end if
);
} catch (NotDataFoundException) { } catch (NotDataFoundException) {
return StatusCode(404, "No $operation['resultType']['apiName'] element found"); return StatusCode(404, "No $operation['resultType']['apiName'] element found");
} }