@s-hirano-ist/s-scripts 1.24.1 → 1.25.1
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.
- package/dist/infrastructures/cache-invalidation-client.d.ts +9 -0
- package/dist/infrastructures/cache-invalidation-client.d.ts.map +1 -0
- package/dist/infrastructures/cache-invalidation-client.js +21 -0
- package/dist/infrastructures/cache-invalidation-client.js.map +1 -0
- package/dist/infrastructures/cache-invalidation-client.test.d.ts +2 -0
- package/dist/infrastructures/cache-invalidation-client.test.d.ts.map +1 -0
- package/dist/infrastructures/cache-invalidation-client.test.js +25 -0
- package/dist/infrastructures/cache-invalidation-client.test.js.map +1 -0
- package/dist/reset-articles.js +9 -0
- package/dist/reset-articles.js.map +1 -1
- package/dist/reset-books.js +9 -0
- package/dist/reset-books.js.map +1 -1
- package/dist/reset-images.js +9 -0
- package/dist/reset-images.js.map +1 -1
- package/dist/reset-notes.js +9 -0
- package/dist/reset-notes.js.map +1 -1
- package/dist/revert-articles.js +9 -0
- package/dist/revert-articles.js.map +1 -1
- package/dist/revert-books.js +9 -0
- package/dist/revert-books.js.map +1 -1
- package/dist/revert-images.js +9 -0
- package/dist/revert-images.js.map +1 -1
- package/dist/revert-notes.js +9 -0
- package/dist/revert-notes.js.map +1 -1
- package/package.json +6 -6
|
@@ -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 @@
|
|
|
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"}
|
package/dist/reset-articles.js
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"reset-articles.js","sourceRoot":"","sources":["../src/reset-articles.ts"],"names":[],"mappings":"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"}
|
package/dist/reset-books.js
CHANGED
|
@@ -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
|
}
|
package/dist/reset-books.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"reset-books.js","sourceRoot":"","sources":["../src/reset-books.ts"],"names":[],"mappings":"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"}
|
package/dist/reset-images.js
CHANGED
|
@@ -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
|
}
|
package/dist/reset-images.js.map
CHANGED
|
@@ -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":";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,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAE/F,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,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,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,QAAQ,EACR,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,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"}
|
package/dist/reset-notes.js
CHANGED
|
@@ -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
|
}
|
package/dist/reset-notes.js.map
CHANGED
|
@@ -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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"}
|
package/dist/revert-articles.js
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"revert-articles.js","sourceRoot":"","sources":["../src/revert-articles.ts"],"names":[],"mappings":"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"}
|
package/dist/revert-books.js
CHANGED
|
@@ -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",
|
package/dist/revert-books.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"revert-books.js","sourceRoot":"","sources":["../src/revert-books.ts"],"names":[],"mappings":"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"}
|
package/dist/revert-images.js
CHANGED
|
@@ -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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"}
|
package/dist/revert-notes.js
CHANGED
|
@@ -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",
|
package/dist/revert-notes.js.map
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "1.25.1",
|
|
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.
|
|
59
|
+
"sharp": "0.35.1",
|
|
60
60
|
"turndown": "7.2.4",
|
|
61
|
-
"@s-hirano-ist/s-core": "1.21.1",
|
|
62
61
|
"@s-hirano-ist/s-database": "1.21.0",
|
|
62
|
+
"@s-hirano-ist/s-core": "1.21.2",
|
|
63
|
+
"@s-hirano-ist/s-search": "1.18.13",
|
|
63
64
|
"@s-hirano-ist/s-notification": "1.18.5",
|
|
64
|
-
"@s-hirano-ist/s-
|
|
65
|
-
"@s-hirano-ist/s-storage": "1.18.8"
|
|
65
|
+
"@s-hirano-ist/s-storage": "1.18.9"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/js-yaml": "4.0.9",
|
|
69
|
-
"@types/node": "24.13.
|
|
69
|
+
"@types/node": "24.13.2",
|
|
70
70
|
"@types/turndown": "5.0.6",
|
|
71
71
|
"tsx": "4.22.4",
|
|
72
72
|
"typescript": "6.0.3"
|