@s-hirano-ist/s-scripts 1.24.0 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ export declare const CACHE_INVALIDATION_DOMAINS: readonly ["articles", "books", "images", "notes"];
2
+ export type CacheInvalidationDomain = (typeof CACHE_INVALIDATION_DOMAINS)[number];
3
+ type CacheInvalidationConfig = Readonly<{
4
+ url: string;
5
+ secret: string;
6
+ }>;
7
+ export declare function invalidateContentCache(config: CacheInvalidationConfig, domain: CacheInvalidationDomain, userId: string, fetchImplementation?: typeof fetch): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=cache-invalidation-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-invalidation-client.d.ts","sourceRoot":"","sources":["../../src/infrastructures/cache-invalidation-client.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,mDAK7B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAClC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7C,KAAK,uBAAuB,GAAG,QAAQ,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,MAAM,EACd,mBAAmB,GAAE,OAAO,KAAa,GACvC,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -0,0 +1,21 @@
1
+ export const CACHE_INVALIDATION_DOMAINS = [
2
+ "articles",
3
+ "books",
4
+ "images",
5
+ "notes",
6
+ ];
7
+ export async function invalidateContentCache(config, domain, userId, fetchImplementation = fetch) {
8
+ const response = await fetchImplementation(config.url, {
9
+ method: "POST",
10
+ headers: {
11
+ authorization: `Bearer ${config.secret}`,
12
+ "content-type": "application/json",
13
+ },
14
+ body: JSON.stringify({ domain, userId }),
15
+ });
16
+ if (!response.ok) {
17
+ const responseBody = await response.text();
18
+ throw new Error(`Cache invalidation failed (${response.status}): ${responseBody}`);
19
+ }
20
+ }
21
+ //# sourceMappingURL=cache-invalidation-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-invalidation-client.js","sourceRoot":"","sources":["../../src/infrastructures/cache-invalidation-client.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC,UAAU;IACV,OAAO;IACP,QAAQ;IACR,OAAO;CACE,CAAC;AAUX,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,MAA+B,EAC/B,MAA+B,EAC/B,MAAc,EACd,sBAAoC,KAAK;IAEzC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE;QACtD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACR,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;YACxC,cAAc,EAAE,kBAAkB;SAClC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACd,8BAA8B,QAAQ,CAAC,MAAM,MAAM,YAAY,EAAE,CACjE,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cache-invalidation-client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-invalidation-client.test.d.ts","sourceRoot":"","sources":["../../src/infrastructures/cache-invalidation-client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { describe, expect, test, vi } from "vitest";
2
+ import { invalidateContentCache } from "./cache-invalidation-client.js";
3
+ describe("invalidateContentCache", () => {
4
+ test("calls the authenticated internal endpoint for the user and domain", async () => {
5
+ const fetchMock = vi
6
+ .fn()
7
+ .mockResolvedValue(new Response(JSON.stringify({ invalidated: 6 }), { status: 200 }));
8
+ await invalidateContentCache({ url: "https://example.com/api/internal/cache/invalidate", secret: "s" }, "books", "user", fetchMock);
9
+ expect(fetchMock).toHaveBeenCalledWith("https://example.com/api/internal/cache/invalidate", {
10
+ method: "POST",
11
+ headers: {
12
+ authorization: "Bearer s",
13
+ "content-type": "application/json",
14
+ },
15
+ body: JSON.stringify({ domain: "books", userId: "user" }),
16
+ });
17
+ });
18
+ test("throws with the response details so the caller logs and notifies failure", async () => {
19
+ const fetchMock = vi
20
+ .fn()
21
+ .mockResolvedValue(new Response("unauthorized", { status: 401 }));
22
+ await expect(invalidateContentCache({ url: "https://example.com", secret: "wrong" }, "notes", "user", fetchMock)).rejects.toThrow("Cache invalidation failed (401): unauthorized");
23
+ });
24
+ });
25
+ //# sourceMappingURL=cache-invalidation-client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-invalidation-client.test.js","sourceRoot":"","sources":["../../src/infrastructures/cache-invalidation-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,SAAS,GAAG,EAAE;aAClB,EAAE,EAAgB;aAClB,iBAAiB,CACjB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CACjE,CAAC;QAEH,MAAM,sBAAsB,CAC3B,EAAE,GAAG,EAAE,mDAAmD,EAAE,MAAM,EAAE,GAAG,EAAE,EACzE,OAAO,EACP,MAAM,EACN,SAAS,CACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACrC,mDAAmD,EACnD;YACC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACR,aAAa,EAAE,UAAU;gBACzB,cAAc,EAAE,kBAAkB;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SACzD,CACD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,SAAS,GAAG,EAAE;aAClB,EAAE,EAAgB;aAClB,iBAAiB,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAEnE,MAAM,MAAM,CACX,sBAAsB,CACrB,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,EAAE,EAC/C,OAAO,EACP,MAAM,EACN,SAAS,CACT,CACD,CAAC,OAAO,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -3,8 +3,11 @@ import { ArticlesBatchDomainService } from "@s-hirano-ist/s-core/articles/servic
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
5
  import { createArticlesCommandRepository } from "./infrastructures/articles-command-repository.js";
6
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -30,6 +33,12 @@ async function main() {
30
33
  const batchService = new ArticlesBatchDomainService(commandRepository);
31
34
  // Execute batch reset through domain service
32
35
  const result = await batchService.resetArticles(userId);
36
+ // The database transaction has committed at this point. A cache failure is
37
+ // treated as a failed batch run so it is logged and sent to Pushover.
38
+ await invalidateContentCache({
39
+ url: env.CACHE_INVALIDATION_URL ?? "",
40
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
41
+ }, "articles", userId);
33
42
  console.log(`💾 LAST_UPDATEDの記事をEXPORTEDに変更しました(${result.finalized.count}件)`);
34
43
  console.log(`💾 ${result.marked.count}件の記事をリセットしました`);
35
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reset-articles.js","sourceRoot":"","sources":["../src/reset-articles.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AAClH,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kDAAkD,CAAC;AAEnG,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,8CAA8C;IAC9C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,KAAK,UAAU,aAAa;QAC3B,4CAA4C;QAC5C,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAEvE,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAExD,OAAO,CAAC,GAAG,CACV,sCAAsC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAChE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM,mBAAmB,CAAC,UAAU,CAAC,0BAA0B,EAAE;YAChE,MAAM,EAAE,gBAAgB;SACxB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,0BAA0B,MAAM,CAAC,KAAK,CAAC,EAAE,EACzC;YACC,MAAM,EAAE,gBAAgB;SACxB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"reset-articles.js","sourceRoot":"","sources":["../src/reset-articles.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AAClH,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAExF,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;QAChE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC1D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,8CAA8C;IAC9C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,KAAK,UAAU,aAAa;QAC3B,4CAA4C;QAC5C,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAEvE,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAExD,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,sBAAsB,CAC3B;YACC,GAAG,EAAE,GAAG,CAAC,sBAAsB,IAAI,EAAE;YACrC,MAAM,EAAE,GAAG,CAAC,yBAAyB,IAAI,EAAE;SAC3C,EACD,UAAU,EACV,MAAM,CACN,CAAC;QAEF,OAAO,CAAC,GAAG,CACV,sCAAsC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAChE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM,mBAAmB,CAAC,UAAU,CAAC,0BAA0B,EAAE;YAChE,MAAM,EAAE,gBAAgB;SACxB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,0BAA0B,MAAM,CAAC,KAAK,CAAC,EAAE,EACzC;YACC,MAAM,EAAE,gBAAgB;SACxB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -3,8 +3,11 @@ import { BooksBatchDomainService } from "@s-hirano-ist/s-core/books/services/boo
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
5
  import { createBooksCommandRepository } from "./infrastructures/books-command-repository.js";
6
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -28,6 +31,12 @@ async function main() {
28
31
  const commandRepository = createBooksCommandRepository(prisma);
29
32
  const batchService = new BooksBatchDomainService(commandRepository);
30
33
  const result = await batchService.resetBooks(userId);
34
+ // The database transaction has committed at this point. A cache failure is
35
+ // treated as a failed batch run so it is logged and sent to Pushover.
36
+ await invalidateContentCache({
37
+ url: env.CACHE_INVALIDATION_URL ?? "",
38
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
39
+ }, "books", userId);
31
40
  console.log(`💾 LAST_UPDATEDの本をEXPORTEDに変更しました(${result.finalized.count}件)`);
32
41
  console.log(`💾 ${result.marked.count}件の本をリセットしました`);
33
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reset-books.js","sourceRoot":"","sources":["../src/reset-books.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gEAAgE,CAAC;AACzG,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,KAAK,UAAU,UAAU;QACxB,4CAA4C;QAC5C,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CACV,qCAAqC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAC/D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,mBAAmB,CAAC,UAAU,CAAC,uBAAuB,EAAE;YAC7D,MAAM,EAAE,aAAa;SACrB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,uBAAuB,MAAM,CAAC,KAAK,CAAC,EAAE,EACtC;YACC,MAAM,EAAE,aAAa;SACrB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"reset-books.js","sourceRoot":"","sources":["../src/reset-books.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@
2
2
  import { ImagesBatchDomainService } from "@s-hirano-ist/s-core/images/services/images-batch-domain-service";
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
5
6
  import { createImagesCommandRepository } from "./infrastructures/images-command-repository.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -28,6 +31,12 @@ async function main() {
28
31
  const commandRepository = createImagesCommandRepository(prisma);
29
32
  const batchService = new ImagesBatchDomainService(commandRepository);
30
33
  const result = await batchService.resetImages(userId);
34
+ // The database transaction has committed at this point. A cache failure is
35
+ // treated as a failed batch run so it is logged and sent to Pushover.
36
+ await invalidateContentCache({
37
+ url: env.CACHE_INVALIDATION_URL ?? "",
38
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
39
+ }, "images", userId);
31
40
  console.log(`💾 LAST_UPDATEDの画像をEXPORTEDに変更しました(${result.finalized.count}件)`);
32
41
  console.log(`💾 ${result.marked.count}件の画像をリセットしました`);
33
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reset-images.js","sourceRoot":"","sources":["../src/reset-images.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kEAAkE,CAAC;AAC5G,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAE/F,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,KAAK,UAAU,WAAW;QACzB,4CAA4C;QAC5C,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CACV,sCAAsC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAChE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,mBAAmB,CAAC,UAAU,CAAC,wBAAwB,EAAE;YAC9D,MAAM,EAAE,cAAc;SACtB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE,EACvC;YACC,MAAM,EAAE,cAAc;SACtB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"reset-images.js","sourceRoot":"","sources":["../src/reset-images.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@
2
2
  import { NotesBatchDomainService } from "@s-hirano-ist/s-core/notes/services/notes-batch-domain-service";
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
5
6
  import { createNotesCommandRepository } from "./infrastructures/notes-command-repository.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -28,6 +31,12 @@ async function main() {
28
31
  const commandRepository = createNotesCommandRepository(prisma);
29
32
  const batchService = new NotesBatchDomainService(commandRepository);
30
33
  const result = await batchService.resetNotes(userId);
34
+ // The database transaction has committed at this point. A cache failure is
35
+ // treated as a failed batch run so it is logged and sent to Pushover.
36
+ await invalidateContentCache({
37
+ url: env.CACHE_INVALIDATION_URL ?? "",
38
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
39
+ }, "notes", userId);
31
40
  console.log(`💾 LAST_UPDATEDのノートをEXPORTEDに変更しました(${result.finalized.count}件)`);
32
41
  console.log(`💾 ${result.marked.count}件のノートをリセットしました`);
33
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reset-notes.js","sourceRoot":"","sources":["../src/reset-notes.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gEAAgE,CAAC;AACzG,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,KAAK,UAAU,UAAU;QACxB,4CAA4C;QAC5C,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CACV,uCAAuC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CACjE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,mBAAmB,CAAC,UAAU,CAAC,uBAAuB,EAAE;YAC7D,MAAM,EAAE,aAAa;SACrB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,uBAAuB,MAAM,CAAC,KAAK,CAAC,EAAE,EACtC;YACC,MAAM,EAAE,aAAa;SACrB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"reset-notes.js","sourceRoot":"","sources":["../src/reset-notes.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,11 @@ import { ArticlesBatchDomainService } from "@s-hirano-ist/s-core/articles/servic
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
5
  import { createArticlesCommandRepository } from "./infrastructures/articles-command-repository.js";
6
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -29,6 +32,12 @@ async function main() {
29
32
  const batchService = new ArticlesBatchDomainService(commandRepository);
30
33
  // Execute batch revert through domain service
31
34
  const result = await batchService.revertArticles(userId);
35
+ // The database transaction has committed at this point. A cache failure is
36
+ // treated as a failed batch run so it is logged and sent to Pushover.
37
+ await invalidateContentCache({
38
+ url: env.CACHE_INVALIDATION_URL ?? "",
39
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
40
+ }, "articles", userId);
32
41
  console.log(`💾 LAST_UPDATEDの記事をUNEXPORTEDに変更しました(${result.count}件)`);
33
42
  await notificationService.notifyInfo("revert-articles completed", {
34
43
  caller: "revert-articles",
@@ -1 +1 @@
1
- {"version":3,"file":"revert-articles.js","sourceRoot":"","sources":["../src/revert-articles.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AAClH,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kDAAkD,CAAC;AAEnG,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,8CAA8C;IAC9C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACJ,4CAA4C;QAC5C,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAEvE,8CAA8C;QAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEzD,OAAO,CAAC,GAAG,CACV,wCAAwC,MAAM,CAAC,KAAK,IAAI,CACxD,CAAC;QACF,MAAM,mBAAmB,CAAC,UAAU,CAAC,2BAA2B,EAAE;YACjE,MAAM,EAAE,iBAAiB;SACzB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,2BAA2B,MAAM,CAAC,KAAK,CAAC,EAAE,EAC1C;YACC,MAAM,EAAE,iBAAiB;SACzB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"revert-articles.js","sourceRoot":"","sources":["../src/revert-articles.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AAClH,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAExF,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;QAChE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC1D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,8CAA8C;IAC9C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACJ,4CAA4C;QAC5C,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAEvE,8CAA8C;QAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEzD,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,sBAAsB,CAC3B;YACC,GAAG,EAAE,GAAG,CAAC,sBAAsB,IAAI,EAAE;YACrC,MAAM,EAAE,GAAG,CAAC,yBAAyB,IAAI,EAAE;SAC3C,EACD,UAAU,EACV,MAAM,CACN,CAAC;QAEF,OAAO,CAAC,GAAG,CACV,wCAAwC,MAAM,CAAC,KAAK,IAAI,CACxD,CAAC;QACF,MAAM,mBAAmB,CAAC,UAAU,CAAC,2BAA2B,EAAE;YACjE,MAAM,EAAE,iBAAiB;SACzB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,2BAA2B,MAAM,CAAC,KAAK,CAAC,EAAE,EAC1C;YACC,MAAM,EAAE,iBAAiB;SACzB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -3,8 +3,11 @@ import { BooksBatchDomainService } from "@s-hirano-ist/s-core/books/services/boo
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
5
  import { createBooksCommandRepository } from "./infrastructures/books-command-repository.js";
6
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -26,6 +29,12 @@ async function main() {
26
29
  const commandRepository = createBooksCommandRepository(prisma);
27
30
  const batchService = new BooksBatchDomainService(commandRepository);
28
31
  const result = await batchService.revertBooks(userId);
32
+ // The database transaction has committed at this point. A cache failure is
33
+ // treated as a failed batch run so it is logged and sent to Pushover.
34
+ await invalidateContentCache({
35
+ url: env.CACHE_INVALIDATION_URL ?? "",
36
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
37
+ }, "books", userId);
29
38
  console.log(`💾 LAST_UPDATEDの本をUNEXPORTEDに変更しました(${result.count}件)`);
30
39
  await notificationService.notifyInfo("revert-books completed", {
31
40
  caller: "revert-books",
@@ -1 +1 @@
1
- {"version":3,"file":"revert-books.js","sourceRoot":"","sources":["../src/revert-books.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gEAAgE,CAAC;AACzG,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACJ,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CACV,uCAAuC,MAAM,CAAC,KAAK,IAAI,CACvD,CAAC;QACF,MAAM,mBAAmB,CAAC,UAAU,CAAC,wBAAwB,EAAE;YAC9D,MAAM,EAAE,cAAc;SACtB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE,EACvC;YACC,MAAM,EAAE,cAAc;SACtB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"revert-books.js","sourceRoot":"","sources":["../src/revert-books.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@
2
2
  import { ImagesBatchDomainService } from "@s-hirano-ist/s-core/images/services/images-batch-domain-service";
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
5
6
  import { createImagesCommandRepository } from "./infrastructures/images-command-repository.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -26,6 +29,12 @@ async function main() {
26
29
  const commandRepository = createImagesCommandRepository(prisma);
27
30
  const batchService = new ImagesBatchDomainService(commandRepository);
28
31
  const result = await batchService.revertImages(userId);
32
+ // The database transaction has committed at this point. A cache failure is
33
+ // treated as a failed batch run so it is logged and sent to Pushover.
34
+ await invalidateContentCache({
35
+ url: env.CACHE_INVALIDATION_URL ?? "",
36
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
37
+ }, "images", userId);
29
38
  console.log(`💾 LAST_UPDATEDの画像をUNEXPORTEDに変更しました(${result.count}件)`);
30
39
  await notificationService.notifyInfo("revert-images completed", {
31
40
  caller: "revert-images",
@@ -1 +1 @@
1
- {"version":3,"file":"revert-images.js","sourceRoot":"","sources":["../src/revert-images.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kEAAkE,CAAC;AAC5G,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAE/F,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACJ,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,CACV,wCAAwC,MAAM,CAAC,KAAK,IAAI,CACxD,CAAC;QACF,MAAM,mBAAmB,CAAC,UAAU,CAAC,yBAAyB,EAAE;YAC/D,MAAM,EAAE,eAAe;SACvB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,EACxC;YACC,MAAM,EAAE,eAAe;SACvB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"revert-images.js","sourceRoot":"","sources":["../src/revert-images.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@
2
2
  import { NotesBatchDomainService } from "@s-hirano-ist/s-core/notes/services/notes-batch-domain-service";
3
3
  import { makeUserId, } from "@s-hirano-ist/s-core/shared-kernel/entities/common-entity";
4
4
  import { createPushoverService } from "@s-hirano-ist/s-notification";
5
+ import { invalidateContentCache } from "./infrastructures/cache-invalidation-client.js";
5
6
  import { createNotesCommandRepository } from "./infrastructures/notes-command-repository.js";
6
7
  async function main() {
7
8
  const env = {
9
+ CACHE_INVALIDATION_SECRET: process.env.CACHE_INVALIDATION_SECRET,
10
+ CACHE_INVALIDATION_URL: process.env.CACHE_INVALIDATION_URL,
8
11
  DATABASE_URL: process.env.DATABASE_URL,
9
12
  PUSHOVER_URL: process.env.PUSHOVER_URL,
10
13
  PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
@@ -26,6 +29,12 @@ async function main() {
26
29
  const commandRepository = createNotesCommandRepository(prisma);
27
30
  const batchService = new NotesBatchDomainService(commandRepository);
28
31
  const result = await batchService.revertNotes(userId);
32
+ // The database transaction has committed at this point. A cache failure is
33
+ // treated as a failed batch run so it is logged and sent to Pushover.
34
+ await invalidateContentCache({
35
+ url: env.CACHE_INVALIDATION_URL ?? "",
36
+ secret: env.CACHE_INVALIDATION_SECRET ?? "",
37
+ }, "notes", userId);
29
38
  console.log(`💾 LAST_UPDATEDのノートをUNEXPORTEDに変更しました(${result.count}件)`);
30
39
  await notificationService.notifyInfo("revert-notes completed", {
31
40
  caller: "revert-notes",
@@ -1 +1 @@
1
- {"version":3,"file":"revert-notes.js","sourceRoot":"","sources":["../src/revert-notes.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gEAAgE,CAAC;AACzG,OAAO,EACN,UAAU,GAEV,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F,KAAK,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG;QACX,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KACzC,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;QACjD,GAAG,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QAC3B,OAAO,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACpC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAW,UAAU,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACJ,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CACV,yCAAyC,MAAM,CAAC,KAAK,IAAI,CACzD,CAAC;QACF,MAAM,mBAAmB,CAAC,UAAU,CAAC,wBAAwB,EAAE;YAC9D,MAAM,EAAE,cAAc;SACtB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,mBAAmB,CAAC,WAAW,CACpC,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE,EACvC;YACC,MAAM,EAAE,cAAc;SACtB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"revert-notes.js","sourceRoot":"","sources":["../src/revert-notes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@s-hirano-ist/s-scripts",
3
- "version": "1.24.0",
3
+ "version": "1.25.0",
4
4
  "description": "CLI scripts for s-private data operations",
5
5
  "type": "module",
6
6
  "bin": {
@@ -56,17 +56,17 @@
56
56
  "gray-matter": "4.0.3",
57
57
  "iconv-lite": "0.7.2",
58
58
  "js-yaml": "4.2.0",
59
- "sharp": "0.34.5",
59
+ "sharp": "0.35.1",
60
60
  "turndown": "7.2.4",
61
- "@s-hirano-ist/s-core": "1.21.0",
62
- "@s-hirano-ist/s-database": "1.21.0",
61
+ "@s-hirano-ist/s-core": "1.21.1",
63
62
  "@s-hirano-ist/s-notification": "1.18.5",
64
- "@s-hirano-ist/s-search": "1.18.11",
65
- "@s-hirano-ist/s-storage": "1.18.7"
63
+ "@s-hirano-ist/s-database": "1.21.0",
64
+ "@s-hirano-ist/s-search": "1.18.12",
65
+ "@s-hirano-ist/s-storage": "1.18.8"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@types/js-yaml": "4.0.9",
69
- "@types/node": "24.12.4",
69
+ "@types/node": "24.13.0",
70
70
  "@types/turndown": "5.0.6",
71
71
  "tsx": "4.22.4",
72
72
  "typescript": "6.0.3"