Skip to content

Commit 78ece30

Browse files
Add subject
1 parent 595d4b6 commit 78ece30

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

internal/datastore/src/__test__/letter-repository.test.ts

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ function createLetter(
2525
status,
2626
createdAt: date,
2727
updatedAt: date,
28-
source: "/data-plane/letter-rendering/pdf"
28+
source: "/data-plane/letter-rendering/pdf",
29+
subject: `client/1/letter-request/${letterId}`,
2930
};
3031
}
3132

@@ -68,8 +69,12 @@ describe("LetterRepository", () => {
6869
}
6970

7071
function assertTtl(ttl: number, before: number, after: number) {
71-
const expectedLower = Math.floor(before / 1000 + 60 * 60 * db.config.lettersTtlHours);
72-
const expectedUpper = Math.floor(after / 1000 + 60 * 60 * db.config.lettersTtlHours);
72+
const expectedLower = Math.floor(
73+
before / 1000 + 60 * 60 * db.config.lettersTtlHours,
74+
);
75+
const expectedUpper = Math.floor(
76+
after / 1000 + 60 * 60 * db.config.lettersTtlHours,
77+
);
7378
expect(ttl).toBeGreaterThanOrEqual(expectedLower);
7479
expect(ttl).toBeLessThanOrEqual(expectedUpper);
7580
}
@@ -79,7 +84,9 @@ describe("LetterRepository", () => {
7984
const letterId = "letter1";
8085
const date = new Date().toISOString();
8186

82-
await letterRepository.putLetter(createLetter(supplierId, letterId, "PENDING", date));
87+
await letterRepository.putLetter(
88+
createLetter(supplierId, letterId, "PENDING", date),
89+
);
8390

8491
const letter = await letterRepository.getLetterById(supplierId, letterId);
8592
expect(letter).toBeDefined();
@@ -94,6 +101,7 @@ describe("LetterRepository", () => {
94101
expect(letter.groupId).toBe("group1");
95102
expect(letter.reasonCode).toBeUndefined();
96103
expect(letter.reasonText).toBeUndefined();
104+
expect(letter.subject).toBe(`client/1/letter-request/${letterId}`);
97105
});
98106

99107
test("fetches a letter by id", async () => {
@@ -106,6 +114,9 @@ describe("LetterRepository", () => {
106114
specificationId: "specification1",
107115
groupId: "group1",
108116
status: "PENDING",
117+
url: "s3://bucket/letter1.pdf",
118+
source: "/data-plane/letter-rendering/pdf",
119+
subject: "client/1/letter-request/letter1",
109120
}),
110121
);
111122
});
@@ -475,7 +486,12 @@ describe("LetterRepository", () => {
475486
});
476487

477488
test("successful upsert (update status) returns updated letter", async () => {
478-
const letter: InsertLetter = createLetter("supplier1", "letter1", "PENDING", new Date(2020, 0, 1).toISOString());
489+
const letter: InsertLetter = createLetter(
490+
"supplier1",
491+
"letter1",
492+
"PENDING",
493+
new Date(2020, 0, 1).toISOString(),
494+
);
479495
const existingLetter: Letter = await letterRepository.putLetter(letter);
480496

481497
const updateLetterStatus: UpsertLetter = {
@@ -485,6 +501,7 @@ describe("LetterRepository", () => {
485501
reasonCode: "R01",
486502
reasonText: "R01 text",
487503
source: "/data-plane/letter-rendering/pdf",
504+
subject: "client/1/letter-request/letter1",
488505
};
489506

490507
const before = Date.now();
@@ -506,6 +523,7 @@ describe("LetterRepository", () => {
506523
url: "s3://bucket/letter1.pdf",
507524
supplierStatus: "supplier1#REJECTED",
508525
source: "/data-plane/letter-rendering/pdf",
526+
subject: "client/1/letter-request/letter1",
509527
}),
510528
);
511529
expect(Date.parse(result.updatedAt)).toBeGreaterThan(
@@ -525,6 +543,7 @@ describe("LetterRepository", () => {
525543
supplierId: "supplier1",
526544
url: "s3://bucket/letter1.pdf",
527545
source: "/data-plane/letter-rendering/pdf",
546+
subject: "client/1/letter-request/letter1",
528547
};
529548

530549
const before = Date.now();
@@ -541,6 +560,8 @@ describe("LetterRepository", () => {
541560
groupId: "group1",
542561
supplierId: "supplier1",
543562
url: "s3://bucket/letter1.pdf",
563+
source: "/data-plane/letter-rendering/pdf",
564+
subject: "client/1/letter-request/letter1",
544565
}),
545566
);
546567

@@ -552,7 +573,12 @@ describe("LetterRepository", () => {
552573
});
553574

554575
test("successful upsert without status change (update url)", async () => {
555-
const insertLetter: InsertLetter = createLetter("supplier1", "letter1", "PENDING", new Date(2020, 0, 1).toISOString());
576+
const insertLetter: InsertLetter = createLetter(
577+
"supplier1",
578+
"letter1",
579+
"PENDING",
580+
new Date(2020, 0, 1).toISOString(),
581+
);
556582
const existingLetter = await letterRepository.putLetter(insertLetter);
557583

558584
const before = Date.now();
@@ -574,6 +600,8 @@ describe("LetterRepository", () => {
574600
supplierId: "supplier1",
575601
url: "s3://updateToPdf",
576602
supplierStatus: "supplier1#PENDING",
603+
source: "/data-plane/letter-rendering/pdf",
604+
subject: "client/1/letter-request/letter1",
577605
}),
578606
);
579607
expect(Date.parse(result.updatedAt)).toBeGreaterThan(

internal/datastore/src/letter-repository.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,11 @@ export class LetterRepository {
324324
exprAttrValues[":source"] = upsert.source;
325325
}
326326

327+
if (upsert.subject !== undefined) {
328+
setParts.push("subject = :subject");
329+
exprAttrValues[":subject"] = upsert.subject;
330+
}
331+
327332
const updateExpression = `SET ${setParts.join(", ")}`;
328333

329334
const command = new UpdateCommand({

internal/datastore/src/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ export const LetterSchema = LetterSchemaBase.extend({
4848
supplierStatus: z.string().describe("Secondary index PK"),
4949
supplierStatusSk: z.string().describe("Secondary index SK"),
5050
ttl: z.int(),
51-
source: z.string()
51+
source: z.string(),
52+
subject: z.string(),
5253
}).describe("Letter");
5354

5455
/**
@@ -81,6 +82,7 @@ export type UpsertLetter = {
8182
reasonCode?: string;
8283
reasonText?: string;
8384
source?: string;
85+
subject?: string;
8486
};
8587

8688
export const MISchemaBase = z.object({

lambdas/upsert-letter/src/handler/upsert-handler.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ function mapToUpsertLetter(
3434
upsertRequest.data.templateId,
3535
url: upsertRequest.data.url,
3636
source: upsertRequest.source,
37+
subject: upsertRequest.subject,
3738
};
3839
}
3940

0 commit comments

Comments
 (0)