Skip to content

Commit 6ffe754

Browse files
authored
fix: guard against missing sync job config in GetSyncJobConfig (#104)
- Use null-conditional access when reading syncJobsConfig.Value.Jobs - Return 204 No Content from ListIds when config or jobs are null - Change ListIds, ListAreas, GetJobConfig to synchronous; no async/await used - Explicit TryGetValue checks (== true) for clarity with null-conditional
1 parent c6f18e8 commit 6ffe754

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

src/SqlBulkSyncFunction/Functions/GetSyncJobConfig.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ ITokenCacheService tokenCacheService
2323
{
2424

2525
[Function(nameof(GetSyncJobConfig) + nameof(ListIds))]
26-
public async Task<IActionResult> ListIds(
26+
public IActionResult ListIds(
2727
[HttpTrigger(
2828
AuthorizationLevel.Function,
2929
"get",
@@ -33,12 +33,13 @@ public async Task<IActionResult> ListIds(
3333
{
3434
ArgumentNullException.ThrowIfNull(req);
3535

36-
var idS = syncJobsConfig.Value.Jobs.Keys;
37-
return new OkObjectResult(idS);
36+
return syncJobsConfig?.Value?.Jobs?.Keys is { } ids
37+
? new OkObjectResult(ids)
38+
: new NoContentResult();
3839
}
3940

4041
[Function(nameof(GetSyncJobConfig) + nameof(ListAreas))]
41-
public async Task<IActionResult> ListAreas(
42+
public IActionResult ListAreas(
4243
[HttpTrigger(
4344
AuthorizationLevel.Function,
4445
"get",
@@ -51,16 +52,17 @@ string id
5152

5253
if (
5354
!string.IsNullOrWhiteSpace(id) &&
54-
syncJobsConfig.Value.Jobs.TryGetValue(id, out var syncJobConfig)
55-
&& syncJobConfig?.Area is { Length: > 0 } area)
55+
syncJobsConfig?.Value?.Jobs?.TryGetValue(id, out var syncJobConfig) == true &&
56+
syncJobConfig?.Area is { Length: > 0 } area
57+
)
5658
{
5759
return new OkObjectResult(new string[] { area });
5860
}
5961
return new NotFoundResult();
6062
}
6163

6264
[Function(nameof(GetSyncJobConfig) + nameof(GetJobConfig))]
63-
public async Task<IActionResult> GetJobConfig(
65+
public IActionResult GetJobConfig(
6466
[HttpTrigger(
6567
AuthorizationLevel.Function,
6668
"get",
@@ -74,7 +76,7 @@ string area
7476

7577
if (!string.IsNullOrWhiteSpace(area) &&
7678
!string.IsNullOrWhiteSpace(id) &&
77-
syncJobsConfig.Value.Jobs.TryGetValue(id, out var jobConfig) &&
79+
syncJobsConfig?.Value?.Jobs?.TryGetValue(id, out var jobConfig) == true &&
7880
StringComparer.OrdinalIgnoreCase.Equals(area, jobConfig?.Area))
7981
{
8082
var tables = jobConfig.Tables.ToDictionary(
@@ -114,7 +116,7 @@ string area
114116

115117
if (!string.IsNullOrWhiteSpace(area) &&
116118
!string.IsNullOrWhiteSpace(id) &&
117-
syncJobsConfig.Value.Jobs.TryGetValue(id, out var jobConfig) &&
119+
syncJobsConfig?.Value?.Jobs?.TryGetValue(id, out var jobConfig) == true &&
118120
StringComparer.OrdinalIgnoreCase.Equals(area, jobConfig?.Area))
119121
{
120122
var syncJob = jobConfig.ToSyncJob(

0 commit comments

Comments
 (0)