Skip to content

Commit 110bd3a

Browse files
committed
style: format codebase
1 parent aabf73c commit 110bd3a

26 files changed

Lines changed: 2076 additions & 324 deletions

ScanEventWorker.slnx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<Solution>
2-
<Folder Name="/src/">
3-
<Project Path="src/ScanEventWorker.Cdk/ScanEventWorker.Cdk.csproj" />
4-
<Project Path="src/ScanEventWorker/ScanEventWorker.csproj" />
5-
</Folder>
6-
<Folder Name="/tests/">
7-
<Project Path="tests/ScanEventWorker.Tests/ScanEventWorker.Tests.csproj" />
8-
</Folder>
2+
<Folder Name="/src/">
3+
<Project Path="src/ScanEventWorker.Cdk/ScanEventWorker.Cdk.csproj"/>
4+
<Project Path="src/ScanEventWorker/ScanEventWorker.csproj"/>
5+
</Folder>
6+
<Folder Name="/tests/">
7+
<Project Path="tests/ScanEventWorker.Tests/ScanEventWorker.Tests.csproj"/>
8+
</Folder>
99
</Solution>

src/ScanEventWorker.Cdk/Program.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
using Amazon.CDK;
22
using ScanEventWorker.Cdk;
3+
using Environment = Amazon.CDK.Environment;
34

45
var app = new App();
5-
_ = new ScanEventWorkerStack(app, "ScanEventWorkerStack", new StackProps
6-
{
7-
Env = new Amazon.CDK.Environment
8-
{
9-
Region = "ap-southeast-2"
10-
}
11-
});
6+
_ = new ScanEventWorkerStack(app, "ScanEventWorkerStack",
7+
new StackProps { Env = new Environment { Region = "ap-southeast-2" } });
128
app.Synth();

src/ScanEventWorker.Cdk/ScanEventWorker.Cdk.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
<TargetFramework>net10.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
8+
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
89
</PropertyGroup>
910

1011
<ItemGroup>
11-
<PackageReference Include="Amazon.CDK.Lib" Version="2.238.0" />
12-
<PackageReference Include="Constructs" Version="10.5.0" />
12+
<PackageReference Include="Amazon.CDK.Lib" Version="2.239.0" />
13+
<PackageReference Include="Constructs" Version="10.5.1" />
1314
</ItemGroup>
1415

15-
</Project>
16+
</Project>

src/ScanEventWorker.Cdk/ScanEventWorkerStack.cs

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,22 @@ public class ScanEventWorkerStack : Stack
99
public ScanEventWorkerStack(Construct scope, string id, IStackProps? props = null)
1010
: base(scope, id, props)
1111
{
12-
var dlq = new Queue(this, "ScanEventsDlq", new QueueProps
13-
{
14-
QueueName = "scan-events-dlq",
15-
RetentionPeriod = Duration.Days(14)
16-
});
12+
var dlq = new Queue(this, "ScanEventsDlq",
13+
new QueueProps { QueueName = "scan-events-dlq", RetentionPeriod = Duration.Days(14) });
1714

18-
var mainQueue = new Queue(this, "ScanEventsQueue", new QueueProps
19-
{
20-
QueueName = "scan-events-queue",
21-
VisibilityTimeout = Duration.Seconds(30),
22-
DeadLetterQueue = new DeadLetterQueue
15+
var mainQueue = new Queue(this, "ScanEventsQueue",
16+
new QueueProps
2317
{
24-
Queue = dlq,
25-
MaxReceiveCount = 3
26-
}
27-
});
18+
QueueName = "scan-events-queue",
19+
VisibilityTimeout = Duration.Seconds(30),
20+
DeadLetterQueue = new DeadLetterQueue { Queue = dlq, MaxReceiveCount = 3 }
21+
});
2822

2923
// Outputs
30-
_ = new CfnOutput(this, "QueueUrl", new CfnOutputProps
31-
{
32-
Value = mainQueue.QueueUrl,
33-
Description = "SQS Main Queue URL"
34-
});
24+
_ = new CfnOutput(this, "QueueUrl",
25+
new CfnOutputProps { Value = mainQueue.QueueUrl, Description = "SQS Main Queue URL" });
3526

36-
_ = new CfnOutput(this, "DlqUrl", new CfnOutputProps
37-
{
38-
Value = dlq.QueueUrl,
39-
Description = "SQS Dead Letter Queue URL"
40-
});
27+
_ = new CfnOutput(this, "DlqUrl",
28+
new CfnOutputProps { Value = dlq.QueueUrl, Description = "SQS Dead Letter Queue URL" });
4129
}
4230
}
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
{
2+
"version": 1,
3+
"dependencies": {
4+
"net10.0": {
5+
"Amazon.CDK.Lib": {
6+
"type": "Direct",
7+
"requested": "[2.239.0, )",
8+
"resolved": "2.239.0",
9+
"contentHash": "atiQMImpY8L3jiM1rQjsLZn8bFcxinpIKBR0z/fse3lfAXYJz6nYn51BtvHObzfiwp5oC1m0a6nQ7ldBudvSrQ==",
10+
"dependencies": {
11+
"Amazon.CDK.Asset.AwsCliV1": "[2.2.263]",
12+
"Amazon.CDK.Asset.NodeProxyAgentV6": "[2.1.0, 3.0.0)",
13+
"Amazon.CDK.CloudAssembly.Schema": "[50.3.0, 51.0.0)",
14+
"Amazon.JSII.Runtime": "[1.126.0, 2.0.0)",
15+
"Constructs": "[10.5.0, 11.0.0)"
16+
}
17+
},
18+
"Constructs": {
19+
"type": "Direct",
20+
"requested": "[10.5.1, )",
21+
"resolved": "10.5.1",
22+
"contentHash": "/QxSkOj7tDOlIVTn5LIbLJvwqg37QHeTsjVNYVYhpijRFEMLBX3Cv5Ba8prk5rjEzoBTvxYF5pCgA1TRvYYbjg==",
23+
"dependencies": {
24+
"Amazon.JSII.Runtime": "[1.126.0, 2.0.0)"
25+
}
26+
},
27+
"Amazon.CDK.Asset.AwsCliV1": {
28+
"type": "Transitive",
29+
"resolved": "2.2.263",
30+
"contentHash": "U94e+ZNm5XxQt1g4LDhfwmxqJ6fGaNqd8D+URIeTuoXE4a9WKrDerDtrOgJ+JCEwJ7EsUrRupONAWkUfwh8f+g==",
31+
"dependencies": {
32+
"Amazon.JSII.Runtime": "[1.125.0, 2.0.0)"
33+
}
34+
},
35+
"Amazon.CDK.Asset.NodeProxyAgentV6": {
36+
"type": "Transitive",
37+
"resolved": "2.1.0",
38+
"contentHash": "t98TzqXewTtK4inteeSs8LNFUiKjyVN/Ug0jROx/KefRtNHM7pjLhxJ1pht1Pp/RtSPFK8qSzS092ZRRwyUqmg==",
39+
"dependencies": {
40+
"Amazon.JSII.Runtime": "[1.103.1, 2.0.0)"
41+
}
42+
},
43+
"Amazon.CDK.CloudAssembly.Schema": {
44+
"type": "Transitive",
45+
"resolved": "50.3.0",
46+
"contentHash": "Aoz86EKdaUBks+hLzOKgzPQt4P1zkh7BOvSVsl54p/eie/XxaOC1in21tpldqtqaF97tN0dhTTQxR+M6TEE7Sw==",
47+
"dependencies": {
48+
"Amazon.JSII.Runtime": "[1.121.0, 2.0.0)"
49+
}
50+
},
51+
"Amazon.JSII.Runtime": {
52+
"type": "Transitive",
53+
"resolved": "1.126.0",
54+
"contentHash": "nGV3/5arTvrp6Euv2MUb99LlnRVtxP4XyEroacCYAzOt1FhnViFR4pfRRUJdcmCdjKY+IkxVld6iXV27ggbHRg==",
55+
"dependencies": {
56+
"Microsoft.Extensions.DependencyInjection": "9.0.1",
57+
"Microsoft.Extensions.Logging": "9.0.1",
58+
"Microsoft.Extensions.Logging.Console": "9.0.1",
59+
"Newtonsoft.Json": "13.0.3"
60+
}
61+
},
62+
"Microsoft.Extensions.Configuration": {
63+
"type": "Transitive",
64+
"resolved": "9.0.1",
65+
"contentHash": "VuthqFS+ju6vT8W4wevdhEFiRi1trvQtkzWLonApfF5USVzzDcTBoY3F24WvN/tffLSrycArVfX1bThm/9xY2A==",
66+
"dependencies": {
67+
"Microsoft.Extensions.Configuration.Abstractions": "9.0.1",
68+
"Microsoft.Extensions.Primitives": "9.0.1"
69+
}
70+
},
71+
"Microsoft.Extensions.Configuration.Abstractions": {
72+
"type": "Transitive",
73+
"resolved": "9.0.1",
74+
"contentHash": "+4hfFIY1UjBCXFTTOd+ojlDPq6mep3h5Vq5SYE3Pjucr7dNXmq4S/6P/LoVnZFz2e/5gWp/om4svUFgznfULcA==",
75+
"dependencies": {
76+
"Microsoft.Extensions.Primitives": "9.0.1"
77+
}
78+
},
79+
"Microsoft.Extensions.Configuration.Binder": {
80+
"type": "Transitive",
81+
"resolved": "9.0.1",
82+
"contentHash": "w7kAyu1Mm7eParRV6WvGNNwA8flPTub16fwH49h7b/yqJZFTgYxnOVCuiah3G2bgseJMEq4DLjjsyQRvsdzRgA==",
83+
"dependencies": {
84+
"Microsoft.Extensions.Configuration.Abstractions": "9.0.1"
85+
}
86+
},
87+
"Microsoft.Extensions.DependencyInjection": {
88+
"type": "Transitive",
89+
"resolved": "9.0.1",
90+
"contentHash": "qZI42ASAe3hr2zMSA6UjM92pO1LeDq5DcwkgSowXXPY8I56M76pEKrnmsKKbxagAf39AJxkH2DY4sb72ixyOrg==",
91+
"dependencies": {
92+
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1"
93+
}
94+
},
95+
"Microsoft.Extensions.DependencyInjection.Abstractions": {
96+
"type": "Transitive",
97+
"resolved": "9.0.1",
98+
"contentHash": "Tr74eP0oQ3AyC24ch17N8PuEkrPbD0JqIfENCYqmgKYNOmL8wQKzLJu3ObxTUDrjnn4rHoR1qKa37/eQyHmCDA=="
99+
},
100+
"Microsoft.Extensions.Logging": {
101+
"type": "Transitive",
102+
"resolved": "9.0.1",
103+
"contentHash": "E/k5r7S44DOW+08xQPnNbO8DKAQHhkspDboTThNJ6Z3/QBb4LC6gStNWzVmy3IvW7sUD+iJKf4fj0xEkqE7vnQ==",
104+
"dependencies": {
105+
"Microsoft.Extensions.DependencyInjection": "9.0.1",
106+
"Microsoft.Extensions.Logging.Abstractions": "9.0.1",
107+
"Microsoft.Extensions.Options": "9.0.1"
108+
}
109+
},
110+
"Microsoft.Extensions.Logging.Abstractions": {
111+
"type": "Transitive",
112+
"resolved": "9.0.1",
113+
"contentHash": "w2gUqXN/jNIuvqYwX3lbXagsizVNXYyt6LlF57+tMve4JYCEgCMMAjRce6uKcDASJgpMbErRT1PfHy2OhbkqEA==",
114+
"dependencies": {
115+
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1"
116+
}
117+
},
118+
"Microsoft.Extensions.Logging.Configuration": {
119+
"type": "Transitive",
120+
"resolved": "9.0.1",
121+
"contentHash": "MeZePlyu3/74Wk4FHYSzXijADJUhWa7gxtaphLxhS8zEPWdJuBCrPo0sezdCSZaKCL+cZLSLobrb7xt2zHOxZQ==",
122+
"dependencies": {
123+
"Microsoft.Extensions.Configuration": "9.0.1",
124+
"Microsoft.Extensions.Configuration.Abstractions": "9.0.1",
125+
"Microsoft.Extensions.Configuration.Binder": "9.0.1",
126+
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1",
127+
"Microsoft.Extensions.Logging": "9.0.1",
128+
"Microsoft.Extensions.Logging.Abstractions": "9.0.1",
129+
"Microsoft.Extensions.Options": "9.0.1",
130+
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.1"
131+
}
132+
},
133+
"Microsoft.Extensions.Logging.Console": {
134+
"type": "Transitive",
135+
"resolved": "9.0.1",
136+
"contentHash": "YUzguHYlWfp4upfYlpVe3dnY59P25wc+/YLJ9/NQcblT3EvAB1CObQulClll7NtnFbbx4Js0a0UfyS8SbRsWXQ==",
137+
"dependencies": {
138+
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1",
139+
"Microsoft.Extensions.Logging": "9.0.1",
140+
"Microsoft.Extensions.Logging.Abstractions": "9.0.1",
141+
"Microsoft.Extensions.Logging.Configuration": "9.0.1",
142+
"Microsoft.Extensions.Options": "9.0.1"
143+
}
144+
},
145+
"Microsoft.Extensions.Options": {
146+
"type": "Transitive",
147+
"resolved": "9.0.1",
148+
"contentHash": "nggoNKnWcsBIAaOWHA+53XZWrslC7aGeok+aR+epDPRy7HI7GwMnGZE8yEsL2Onw7kMOHVHwKcsDls1INkNUJQ==",
149+
"dependencies": {
150+
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1",
151+
"Microsoft.Extensions.Primitives": "9.0.1"
152+
}
153+
},
154+
"Microsoft.Extensions.Options.ConfigurationExtensions": {
155+
"type": "Transitive",
156+
"resolved": "9.0.1",
157+
"contentHash": "8RRKWtuU4fR+8MQLR/8CqZwZ9yc2xCpllw/WPRY7kskIqEq0hMcEI4AfUJO72yGiK2QJkrsDcUvgB5Yc+3+lyg==",
158+
"dependencies": {
159+
"Microsoft.Extensions.Configuration.Abstractions": "9.0.1",
160+
"Microsoft.Extensions.Configuration.Binder": "9.0.1",
161+
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1",
162+
"Microsoft.Extensions.Options": "9.0.1",
163+
"Microsoft.Extensions.Primitives": "9.0.1"
164+
}
165+
},
166+
"Microsoft.Extensions.Primitives": {
167+
"type": "Transitive",
168+
"resolved": "9.0.1",
169+
"contentHash": "bHtTesA4lrSGD1ZUaMIx6frU3wyy0vYtTa/hM6gGQu5QNrydObv8T5COiGUWsisflAfmsaFOe9Xvw5NSO99z0g=="
170+
},
171+
"Newtonsoft.Json": {
172+
"type": "Transitive",
173+
"resolved": "13.0.3",
174+
"contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
175+
}
176+
}
177+
}
178+
}

src/ScanEventWorker/Domain/ParcelSummary.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
namespace ScanEventWorker.Domain;
22

3-
public sealed class ParcelSummary
3+
public sealed class ParcelSummary(ParcelId parcelId)
44
{
5-
public ParcelId ParcelId { get; }
5+
public ParcelId ParcelId { get; } = parcelId;
66
public EventId LatestEventId { get; private set; }
77
public string LatestType { get; private set; } = string.Empty;
88
public DateTimeOffset LatestCreatedDateTimeUtc { get; private set; }
@@ -11,12 +11,12 @@ public sealed class ParcelSummary
1111
public DateTimeOffset? PickedUpAtUtc { get; private set; }
1212
public DateTimeOffset? DeliveredAtUtc { get; private set; }
1313

14-
public ParcelSummary(ParcelId parcelId) => ParcelId = parcelId;
15-
1614
public void ApplyScanEvent(ScanEvent scanEvent)
1715
{
1816
if (scanEvent.EventId <= LatestEventId)
17+
{
1918
return; // idempotent — ignore older events
19+
}
2020

2121
LatestEventId = scanEvent.EventId;
2222
LatestType = scanEvent.Type;
@@ -27,10 +27,12 @@ public void ApplyScanEvent(ScanEvent scanEvent)
2727
switch (scanEvent.Type)
2828
{
2929
case ScanEventTypes.Pickup:
30-
PickedUpAtUtc ??= scanEvent.CreatedDateTimeUtc; // first occurrence only
30+
PickedUpAtUtc ??= scanEvent.CreatedDateTimeUtc; // first occurrence only
3131
break;
3232
case ScanEventTypes.Delivery:
33-
DeliveredAtUtc ??= scanEvent.CreatedDateTimeUtc; // first occurrence only
33+
DeliveredAtUtc ??= scanEvent.CreatedDateTimeUtc; // first occurrence only
34+
break;
35+
default:
3436
break;
3537
}
3638
}

src/ScanEventWorker/Domain/Result.cs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,27 @@ public readonly struct Result<T>
55
private readonly T? _value;
66
private readonly string? _error;
77

8-
private Result(T value) { _value = value; _error = null; }
9-
private Result(string error) { _value = default; _error = error; }
8+
private Result(T value)
9+
{
10+
_value = value;
11+
_error = null;
12+
}
13+
14+
private Result(string error)
15+
{
16+
_value = default;
17+
_error = error;
18+
}
1019

1120
public bool IsSuccess => _error is null;
12-
public T Value => IsSuccess ? _value! : throw new InvalidOperationException($"Cannot access Value on a failed result: {_error}");
13-
public string Error => !IsSuccess ? _error! : throw new InvalidOperationException("Cannot access Error on a successful result");
21+
22+
public T Value => IsSuccess
23+
? _value!
24+
: throw new InvalidOperationException($"Cannot access Value on a failed result: {_error}");
25+
26+
public string Error => !IsSuccess
27+
? _error!
28+
: throw new InvalidOperationException("Cannot access Error on a successful result");
1429

1530
public static Result<T> Success(T value) => new(value);
1631
public static Result<T> Failure(string error) => new(error);

0 commit comments

Comments
 (0)