@s-hirano-ist/s-scripts 1.6.0 → 1.7.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/fetch-images.js +1 -4
- package/dist/fetch-images.js.map +1 -1
- package/dist/find-duplicate-json-articles.js +0 -20
- package/dist/find-duplicate-json-articles.js.map +1 -1
- package/dist/infrastructures/articles-command-repository.d.ts +40 -0
- package/dist/infrastructures/articles-command-repository.d.ts.map +1 -0
- package/dist/infrastructures/articles-command-repository.js +40 -0
- package/dist/infrastructures/articles-command-repository.js.map +1 -0
- package/dist/infrastructures/books-command-repository.d.ts +17 -0
- package/dist/infrastructures/books-command-repository.d.ts.map +1 -0
- package/dist/infrastructures/books-command-repository.js +25 -0
- package/dist/infrastructures/books-command-repository.js.map +1 -0
- package/dist/infrastructures/images-command-repository.d.ts +17 -0
- package/dist/infrastructures/images-command-repository.d.ts.map +1 -0
- package/dist/infrastructures/images-command-repository.js +25 -0
- package/dist/infrastructures/images-command-repository.js.map +1 -0
- package/dist/infrastructures/notes-command-repository.d.ts +17 -0
- package/dist/infrastructures/notes-command-repository.d.ts.map +1 -0
- package/dist/infrastructures/notes-command-repository.js +25 -0
- package/dist/infrastructures/notes-command-repository.js.map +1 -0
- package/dist/reset-articles.js +10 -16
- package/dist/reset-articles.js.map +1 -1
- package/dist/reset-books.js +8 -17
- package/dist/reset-books.js.map +1 -1
- package/dist/reset-images.js +8 -17
- package/dist/reset-images.js.map +1 -1
- package/dist/reset-notes.js +8 -17
- package/dist/reset-notes.js.map +1 -1
- package/dist/revert-articles.js +9 -8
- package/dist/revert-articles.js.map +1 -1
- package/dist/revert-books.js +7 -9
- package/dist/revert-books.js.map +1 -1
- package/dist/revert-images.js +7 -9
- package/dist/revert-images.js.map +1 -1
- package/dist/revert-notes.js +7 -9
- package/dist/revert-notes.js.map +1 -1
- package/package.json +11 -11
package/dist/fetch-images.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { mkdir } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
4
|
import { makeUnexportedStatus, makeUserId, } from "@s-hirano-ist/s-core/common";
|
|
6
5
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
7
6
|
import * as Minio from "minio";
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = path.dirname(__filename);
|
|
10
7
|
async function main() {
|
|
11
8
|
const env = {
|
|
12
9
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -47,7 +44,7 @@ async function main() {
|
|
|
47
44
|
where: { userId, status: UNEXPORTED },
|
|
48
45
|
});
|
|
49
46
|
console.log(`📊 取得した画像データ数: ${images.length}。`);
|
|
50
|
-
const outputDir = path.join(
|
|
47
|
+
const outputDir = path.join(process.cwd(), "image/dump");
|
|
51
48
|
await mkdir(outputDir, { recursive: true });
|
|
52
49
|
const downloadPromises = images.map(async (image) => {
|
|
53
50
|
const { path: imagePath } = image;
|
package/dist/fetch-images.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-images.js","sourceRoot":"","sources":["../src/fetch-images.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"fetch-images.js","sourceRoot":"","sources":["../src/fetch-images.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
4
|
function getAllJsonFiles(directory) {
|
|
6
5
|
return fs
|
|
7
6
|
.readdirSync(directory)
|
|
@@ -100,33 +99,14 @@ function displayResults(duplicates) {
|
|
|
100
99
|
});
|
|
101
100
|
}
|
|
102
101
|
async function main() {
|
|
103
|
-
const env = {
|
|
104
|
-
PUSHOVER_URL: process.env.PUSHOVER_URL,
|
|
105
|
-
PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
|
|
106
|
-
PUSHOVER_APP_TOKEN: process.env.PUSHOVER_APP_TOKEN,
|
|
107
|
-
};
|
|
108
|
-
if (Object.values(env).some((v) => !v)) {
|
|
109
|
-
throw new Error("Required environment variables are not set.");
|
|
110
|
-
}
|
|
111
|
-
const notificationService = createPushoverService({
|
|
112
|
-
url: env.PUSHOVER_URL ?? "",
|
|
113
|
-
userKey: env.PUSHOVER_USER_KEY ?? "",
|
|
114
|
-
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
115
|
-
});
|
|
116
102
|
try {
|
|
117
103
|
console.log("json/articleディレクトリ内のURL重複を検索中...\n");
|
|
118
104
|
const duplicates = findDuplicateUrls();
|
|
119
105
|
displayResults(duplicates);
|
|
120
106
|
console.log("\n検索完了");
|
|
121
|
-
await notificationService.notifyInfo("find-duplicate-json-articles completed", {
|
|
122
|
-
caller: "find-duplicate-json-articles",
|
|
123
|
-
});
|
|
124
107
|
}
|
|
125
108
|
catch (error) {
|
|
126
109
|
console.error("❌ エラーが発生しました:", error);
|
|
127
|
-
await notificationService.notifyError(`find-duplicate-json-articles failed: ${error}`, {
|
|
128
|
-
caller: "find-duplicate-json-articles",
|
|
129
|
-
});
|
|
130
110
|
process.exit(1);
|
|
131
111
|
}
|
|
132
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-duplicate-json-articles.js","sourceRoot":"","sources":["../src/find-duplicate-json-articles.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"find-duplicate-json-articles.js","sourceRoot":"","sources":["../src/find-duplicate-json-articles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/common";
|
|
2
|
+
/**
|
|
3
|
+
* Prisma client type for transaction support.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* This is a minimal type that supports both regular PrismaClient
|
|
7
|
+
* and transaction clients (from $transaction).
|
|
8
|
+
* Uses a generic approach to accept Prisma's strict typing.
|
|
9
|
+
*/
|
|
10
|
+
type PrismaClientLike = {
|
|
11
|
+
article: {
|
|
12
|
+
updateMany: (args: any) => Promise<{
|
|
13
|
+
count: number;
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Creates an Articles batch command repository for bulk operations.
|
|
19
|
+
*
|
|
20
|
+
* @param prisma - The Prisma client or transaction client
|
|
21
|
+
* @returns An IBatchCommandRepository implementation for articles
|
|
22
|
+
*
|
|
23
|
+
* @remarks
|
|
24
|
+
* This is a specialized implementation for batch scripts.
|
|
25
|
+
* It only implements bulkUpdateStatus for performance.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const prisma = new PrismaClient({ accelerateUrl: env.DATABASE_URL });
|
|
30
|
+
*
|
|
31
|
+
* await prisma.$transaction(async (tx) => {
|
|
32
|
+
* const repo = createArticlesCommandRepository(tx);
|
|
33
|
+
* const batchService = new ArticlesBatchDomainService(repo);
|
|
34
|
+
* await batchService.resetArticles(userId);
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function createArticlesCommandRepository(prisma: PrismaClientLike): IBatchCommandRepository;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=articles-command-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articles-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/articles-command-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,uBAAuB,EAEvB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;GAOG;AACH,KAAK,gBAAgB,GAAG;IACvB,OAAO,EAAE;QACR,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAqBzB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates an Articles batch command repository for bulk operations.
|
|
3
|
+
*
|
|
4
|
+
* @param prisma - The Prisma client or transaction client
|
|
5
|
+
* @returns An IBatchCommandRepository implementation for articles
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* This is a specialized implementation for batch scripts.
|
|
9
|
+
* It only implements bulkUpdateStatus for performance.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const prisma = new PrismaClient({ accelerateUrl: env.DATABASE_URL });
|
|
14
|
+
*
|
|
15
|
+
* await prisma.$transaction(async (tx) => {
|
|
16
|
+
* const repo = createArticlesCommandRepository(tx);
|
|
17
|
+
* const batchService = new ArticlesBatchDomainService(repo);
|
|
18
|
+
* await batchService.resetArticles(userId);
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function createArticlesCommandRepository(prisma) {
|
|
23
|
+
return {
|
|
24
|
+
async bulkUpdateStatus(params) {
|
|
25
|
+
const { userId, fromStatus, toStatus, exportedAt } = params;
|
|
26
|
+
const result = await prisma.article.updateMany({
|
|
27
|
+
where: {
|
|
28
|
+
userId: userId,
|
|
29
|
+
status: fromStatus,
|
|
30
|
+
},
|
|
31
|
+
data: {
|
|
32
|
+
status: toStatus,
|
|
33
|
+
...(exportedAt && { exportedAt: exportedAt }),
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
return { count: result.count };
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=articles-command-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articles-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/articles-command-repository.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,+BAA+B,CAC9C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAgB;oBACxB,MAAM,EAAE,UAAoB;iBAC5B;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAkB;oBAC1B,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAkB,EAAE,CAAC;iBACrD;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/common";
|
|
2
|
+
type PrismaClientLike = {
|
|
3
|
+
book: {
|
|
4
|
+
updateMany: (args: any) => Promise<{
|
|
5
|
+
count: number;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Creates a Books batch command repository for bulk operations.
|
|
11
|
+
*
|
|
12
|
+
* @param prisma - The Prisma client or transaction client
|
|
13
|
+
* @returns An IBatchCommandRepository implementation for books
|
|
14
|
+
*/
|
|
15
|
+
export declare function createBooksCommandRepository(prisma: PrismaClientLike): IBatchCommandRepository;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=books-command-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"books-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/books-command-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,uBAAuB,EAEvB,MAAM,6BAA6B,CAAC;AAErC,KAAK,gBAAgB,GAAG;IACvB,IAAI,EAAE;QAEL,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAqBzB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a Books batch command repository for bulk operations.
|
|
3
|
+
*
|
|
4
|
+
* @param prisma - The Prisma client or transaction client
|
|
5
|
+
* @returns An IBatchCommandRepository implementation for books
|
|
6
|
+
*/
|
|
7
|
+
export function createBooksCommandRepository(prisma) {
|
|
8
|
+
return {
|
|
9
|
+
async bulkUpdateStatus(params) {
|
|
10
|
+
const { userId, fromStatus, toStatus, exportedAt } = params;
|
|
11
|
+
const result = await prisma.book.updateMany({
|
|
12
|
+
where: {
|
|
13
|
+
userId: userId,
|
|
14
|
+
status: fromStatus,
|
|
15
|
+
},
|
|
16
|
+
data: {
|
|
17
|
+
status: toStatus,
|
|
18
|
+
...(exportedAt && { exportedAt: exportedAt }),
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
return { count: result.count };
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=books-command-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"books-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/books-command-repository.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC3C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC3C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAgB;oBACxB,MAAM,EAAE,UAAoB;iBAC5B;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAkB;oBAC1B,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAkB,EAAE,CAAC;iBACrD;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/common";
|
|
2
|
+
type PrismaClientLike = {
|
|
3
|
+
image: {
|
|
4
|
+
updateMany: (args: any) => Promise<{
|
|
5
|
+
count: number;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Creates an Images batch command repository for bulk operations.
|
|
11
|
+
*
|
|
12
|
+
* @param prisma - The Prisma client or transaction client
|
|
13
|
+
* @returns An IBatchCommandRepository implementation for images
|
|
14
|
+
*/
|
|
15
|
+
export declare function createImagesCommandRepository(prisma: PrismaClientLike): IBatchCommandRepository;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=images-command-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"images-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/images-command-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,uBAAuB,EAEvB,MAAM,6BAA6B,CAAC;AAErC,KAAK,gBAAgB,GAAG;IACvB,KAAK,EAAE;QAEN,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAqBzB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates an Images batch command repository for bulk operations.
|
|
3
|
+
*
|
|
4
|
+
* @param prisma - The Prisma client or transaction client
|
|
5
|
+
* @returns An IBatchCommandRepository implementation for images
|
|
6
|
+
*/
|
|
7
|
+
export function createImagesCommandRepository(prisma) {
|
|
8
|
+
return {
|
|
9
|
+
async bulkUpdateStatus(params) {
|
|
10
|
+
const { userId, fromStatus, toStatus, exportedAt } = params;
|
|
11
|
+
const result = await prisma.image.updateMany({
|
|
12
|
+
where: {
|
|
13
|
+
userId: userId,
|
|
14
|
+
status: fromStatus,
|
|
15
|
+
},
|
|
16
|
+
data: {
|
|
17
|
+
status: toStatus,
|
|
18
|
+
...(exportedAt && { exportedAt: exportedAt }),
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
return { count: result.count };
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=images-command-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"images-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/images-command-repository.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC5C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC5C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAgB;oBACxB,MAAM,EAAE,UAAoB;iBAC5B;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAkB;oBAC1B,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAkB,EAAE,CAAC;iBACrD;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IBatchCommandRepository } from "@s-hirano-ist/s-core/common";
|
|
2
|
+
type PrismaClientLike = {
|
|
3
|
+
note: {
|
|
4
|
+
updateMany: (args: any) => Promise<{
|
|
5
|
+
count: number;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Creates a Notes batch command repository for bulk operations.
|
|
11
|
+
*
|
|
12
|
+
* @param prisma - The Prisma client or transaction client
|
|
13
|
+
* @returns An IBatchCommandRepository implementation for notes
|
|
14
|
+
*/
|
|
15
|
+
export declare function createNotesCommandRepository(prisma: PrismaClientLike): IBatchCommandRepository;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=notes-command-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes-command-repository.d.ts","sourceRoot":"","sources":["../../src/infrastructures/notes-command-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,uBAAuB,EAEvB,MAAM,6BAA6B,CAAC;AAErC,KAAK,gBAAgB,GAAG;IACvB,IAAI,EAAE;QAEL,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,gBAAgB,GACtB,uBAAuB,CAqBzB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a Notes batch command repository for bulk operations.
|
|
3
|
+
*
|
|
4
|
+
* @param prisma - The Prisma client or transaction client
|
|
5
|
+
* @returns An IBatchCommandRepository implementation for notes
|
|
6
|
+
*/
|
|
7
|
+
export function createNotesCommandRepository(prisma) {
|
|
8
|
+
return {
|
|
9
|
+
async bulkUpdateStatus(params) {
|
|
10
|
+
const { userId, fromStatus, toStatus, exportedAt } = params;
|
|
11
|
+
const result = await prisma.note.updateMany({
|
|
12
|
+
where: {
|
|
13
|
+
userId: userId,
|
|
14
|
+
status: fromStatus,
|
|
15
|
+
},
|
|
16
|
+
data: {
|
|
17
|
+
status: toStatus,
|
|
18
|
+
...(exportedAt && { exportedAt: exportedAt }),
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
return { count: result.count };
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=notes-command-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes-command-repository.js","sourceRoot":"","sources":["../../src/infrastructures/notes-command-repository.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC3C,MAAwB;IAExB,OAAO;QACN,KAAK,CAAC,gBAAgB,CACrB,MAA8B;YAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC3C,KAAK,EAAE;oBACN,MAAM,EAAE,MAAgB;oBACxB,MAAM,EAAE,UAAoB;iBAC5B;gBACD,IAAI,EAAE;oBACL,MAAM,EAAE,QAAkB;oBAC1B,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,UAAkB,EAAE,CAAC;iBACrD;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/reset-articles.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { ArticlesBatchDomainService } from "@s-hirano-ist/s-core/articles";
|
|
3
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createArticlesCommandRepository } from "./infrastructures/articles-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -23,23 +25,15 @@ async function main() {
|
|
|
23
25
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
26
|
});
|
|
25
27
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
|
-
const EXPORTED = "EXPORTED";
|
|
29
28
|
async function resetArticles() {
|
|
30
29
|
await prisma.$transaction(async (tx) => {
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
console.log(
|
|
37
|
-
|
|
38
|
-
const result = await tx.article.updateMany({
|
|
39
|
-
where: { userId, status: UNEXPORTED },
|
|
40
|
-
data: { status: LAST_UPDATED },
|
|
41
|
-
});
|
|
42
|
-
console.log(`💾 ${result.count}件の記事をリセットしました`);
|
|
30
|
+
// DDD: Create repository and domain service with transaction client
|
|
31
|
+
const commandRepository = createArticlesCommandRepository(tx);
|
|
32
|
+
const batchService = new ArticlesBatchDomainService(commandRepository);
|
|
33
|
+
// Execute batch reset through domain service
|
|
34
|
+
const result = await batchService.resetArticles(userId);
|
|
35
|
+
console.log(`💾 LAST_UPDATEDの記事をEXPORTEDに変更しました(${result.finalized.count}件)`);
|
|
36
|
+
console.log(`💾 ${result.marked.count}件の記事をリセットしました`);
|
|
43
37
|
});
|
|
44
38
|
}
|
|
45
39
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset-articles.js","sourceRoot":"","sources":["../src/reset-articles.ts"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"reset-articles.js","sourceRoot":"","sources":["../src/reset-articles.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAW,EAAE,EAAE;YAC/C,oEAAoE;YACpE,MAAM,iBAAiB,GAAG,+BAA+B,CACxD,EAA2D,CAC3D,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;YAEvE,6CAA6C;YAC7C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAExD,OAAO,CAAC,GAAG,CACV,sCAAsC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAChE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACJ,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,CAAC,0BAA0B,KAAK,EAAE,EAAE;YACxE,MAAM,EAAE,gBAAgB;SACxB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/dist/reset-books.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { BooksBatchDomainService } from "@s-hirano-ist/s-core/books";
|
|
3
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createBooksCommandRepository } from "./infrastructures/books-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -12,7 +14,6 @@ async function main() {
|
|
|
12
14
|
if (Object.values(env).some((v) => !v)) {
|
|
13
15
|
throw new Error("Required environment variables are not set.");
|
|
14
16
|
}
|
|
15
|
-
// Dynamic import for Prisma ESM compatibility
|
|
16
17
|
const { PrismaClient } = await import("@s-hirano-ist/s-database/generated");
|
|
17
18
|
const prisma = new PrismaClient({
|
|
18
19
|
accelerateUrl: env.DATABASE_URL ?? "",
|
|
@@ -23,23 +24,13 @@ async function main() {
|
|
|
23
24
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
25
|
});
|
|
25
26
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
|
-
const EXPORTED = "EXPORTED";
|
|
29
27
|
async function resetBooks() {
|
|
30
28
|
await prisma.$transaction(async (tx) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
});
|
|
36
|
-
console.log("💾 LAST_UPDATEDの本をEXPORTEDに変更しました");
|
|
37
|
-
// UNEXPORTED → LAST_UPDATED (今回バッチをマーク)
|
|
38
|
-
const result = await tx.book.updateMany({
|
|
39
|
-
where: { userId, status: UNEXPORTED },
|
|
40
|
-
data: { status: LAST_UPDATED },
|
|
41
|
-
});
|
|
42
|
-
console.log(`💾 ${result.count}件の本をリセットしました`);
|
|
29
|
+
const commandRepository = createBooksCommandRepository(tx);
|
|
30
|
+
const batchService = new BooksBatchDomainService(commandRepository);
|
|
31
|
+
const result = await batchService.resetBooks(userId);
|
|
32
|
+
console.log(`💾 LAST_UPDATEDの本をEXPORTEDに変更しました(${result.finalized.count}件)`);
|
|
33
|
+
console.log(`💾 ${result.marked.count}件の本をリセットしました`);
|
|
43
34
|
});
|
|
44
35
|
}
|
|
45
36
|
try {
|
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,
|
|
1
|
+
{"version":3,"file":"reset-books.js","sourceRoot":"","sources":["../src/reset-books.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAW,EAAE,EAAE;YAC/C,MAAM,iBAAiB,GAAG,4BAA4B,CACrD,EAAwD,CACxD,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAErD,OAAO,CAAC,GAAG,CACV,qCAAqC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAC/D,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACJ,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,CAAC,uBAAuB,KAAK,EAAE,EAAE;YACrE,MAAM,EAAE,aAAa;SACrB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/dist/reset-images.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
|
+
import { ImagesBatchDomainService } from "@s-hirano-ist/s-core/images";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createImagesCommandRepository } from "./infrastructures/images-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -12,7 +14,6 @@ async function main() {
|
|
|
12
14
|
if (Object.values(env).some((v) => !v)) {
|
|
13
15
|
throw new Error("Required environment variables are not set.");
|
|
14
16
|
}
|
|
15
|
-
// Dynamic import for Prisma ESM compatibility
|
|
16
17
|
const { PrismaClient } = await import("@s-hirano-ist/s-database/generated");
|
|
17
18
|
const prisma = new PrismaClient({
|
|
18
19
|
accelerateUrl: env.DATABASE_URL ?? "",
|
|
@@ -23,23 +24,13 @@ async function main() {
|
|
|
23
24
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
25
|
});
|
|
25
26
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
|
-
const EXPORTED = "EXPORTED";
|
|
29
27
|
async function resetImages() {
|
|
30
28
|
await prisma.$transaction(async (tx) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
});
|
|
36
|
-
console.log("💾 LAST_UPDATEDの画像をEXPORTEDに変更しました");
|
|
37
|
-
// UNEXPORTED → LAST_UPDATED (今回バッチをマーク)
|
|
38
|
-
const result = await tx.image.updateMany({
|
|
39
|
-
where: { userId, status: UNEXPORTED },
|
|
40
|
-
data: { status: LAST_UPDATED },
|
|
41
|
-
});
|
|
42
|
-
console.log(`💾 ${result.count}件の画像をリセットしました`);
|
|
29
|
+
const commandRepository = createImagesCommandRepository(tx);
|
|
30
|
+
const batchService = new ImagesBatchDomainService(commandRepository);
|
|
31
|
+
const result = await batchService.resetImages(userId);
|
|
32
|
+
console.log(`💾 LAST_UPDATEDの画像をEXPORTEDに変更しました(${result.finalized.count}件)`);
|
|
33
|
+
console.log(`💾 ${result.marked.count}件の画像をリセットしました`);
|
|
43
34
|
});
|
|
44
35
|
}
|
|
45
36
|
try {
|
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,
|
|
1
|
+
{"version":3,"file":"reset-images.js","sourceRoot":"","sources":["../src/reset-images.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAW,EAAE,EAAE;YAC/C,MAAM,iBAAiB,GAAG,6BAA6B,CACtD,EAAyD,CACzD,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEtD,OAAO,CAAC,GAAG,CACV,sCAAsC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAChE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACJ,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,CAAC,wBAAwB,KAAK,EAAE,EAAE;YACtE,MAAM,EAAE,cAAc;SACtB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,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
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
|
+
import { NotesBatchDomainService } from "@s-hirano-ist/s-core/notes";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createNotesCommandRepository } from "./infrastructures/notes-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -12,7 +14,6 @@ async function main() {
|
|
|
12
14
|
if (Object.values(env).some((v) => !v)) {
|
|
13
15
|
throw new Error("Required environment variables are not set.");
|
|
14
16
|
}
|
|
15
|
-
// Dynamic import for Prisma ESM compatibility
|
|
16
17
|
const { PrismaClient } = await import("@s-hirano-ist/s-database/generated");
|
|
17
18
|
const prisma = new PrismaClient({
|
|
18
19
|
accelerateUrl: env.DATABASE_URL ?? "",
|
|
@@ -23,23 +24,13 @@ async function main() {
|
|
|
23
24
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
25
|
});
|
|
25
26
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
|
-
const EXPORTED = "EXPORTED";
|
|
29
27
|
async function resetNotes() {
|
|
30
28
|
await prisma.$transaction(async (tx) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
});
|
|
36
|
-
console.log("💾 LAST_UPDATEDのノートをEXPORTEDに変更しました");
|
|
37
|
-
// UNEXPORTED → LAST_UPDATED (今回バッチをマーク)
|
|
38
|
-
const result = await tx.note.updateMany({
|
|
39
|
-
where: { userId, status: UNEXPORTED },
|
|
40
|
-
data: { status: LAST_UPDATED },
|
|
41
|
-
});
|
|
42
|
-
console.log(`💾 ${result.count}件のノートをリセットしました`);
|
|
29
|
+
const commandRepository = createNotesCommandRepository(tx);
|
|
30
|
+
const batchService = new NotesBatchDomainService(commandRepository);
|
|
31
|
+
const result = await batchService.resetNotes(userId);
|
|
32
|
+
console.log(`💾 LAST_UPDATEDのノートをEXPORTEDに変更しました(${result.finalized.count}件)`);
|
|
33
|
+
console.log(`💾 ${result.marked.count}件のノートをリセットしました`);
|
|
43
34
|
});
|
|
44
35
|
}
|
|
45
36
|
try {
|
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,
|
|
1
|
+
{"version":3,"file":"reset-notes.js","sourceRoot":"","sources":["../src/reset-notes.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAW,EAAE,EAAE;YAC/C,MAAM,iBAAiB,GAAG,4BAA4B,CACrD,EAAwD,CACxD,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAErD,OAAO,CAAC,GAAG,CACV,uCAAuC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CACjE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACJ,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,CAAC,uBAAuB,KAAK,EAAE,EAAE;YACrE,MAAM,EAAE,aAAa;SACrB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/dist/revert-articles.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { ArticlesBatchDomainService } from "@s-hirano-ist/s-core/articles";
|
|
3
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createArticlesCommandRepository } from "./infrastructures/articles-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -23,14 +25,13 @@ async function main() {
|
|
|
23
25
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
26
|
});
|
|
25
27
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
28
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
// DDD: Create repository and domain service
|
|
30
|
+
const commandRepository = createArticlesCommandRepository(prisma);
|
|
31
|
+
const batchService = new ArticlesBatchDomainService(commandRepository);
|
|
32
|
+
// Execute batch revert through domain service
|
|
33
|
+
const result = await batchService.revertArticles(userId);
|
|
34
|
+
console.log(`💾 LAST_UPDATEDの記事をUNEXPORTEDに変更しました(${result.count}件)`);
|
|
34
35
|
await notificationService.notifyInfo("revert-articles completed", {
|
|
35
36
|
caller: "revert-articles",
|
|
36
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revert-articles.js","sourceRoot":"","sources":["../src/revert-articles.ts"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"revert-articles.js","sourceRoot":"","sources":["../src/revert-articles.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,CAAC,2BAA2B,KAAK,EAAE,EAAE;YACzE,MAAM,EAAE,iBAAiB;SACzB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/dist/revert-books.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { BooksBatchDomainService } from "@s-hirano-ist/s-core/books";
|
|
3
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createBooksCommandRepository } from "./infrastructures/books-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -12,7 +14,6 @@ async function main() {
|
|
|
12
14
|
if (Object.values(env).some((v) => !v)) {
|
|
13
15
|
throw new Error("Required environment variables are not set.");
|
|
14
16
|
}
|
|
15
|
-
// Dynamic import for Prisma ESM compatibility
|
|
16
17
|
const { PrismaClient } = await import("@s-hirano-ist/s-database/generated");
|
|
17
18
|
const prisma = new PrismaClient({
|
|
18
19
|
accelerateUrl: env.DATABASE_URL ?? "",
|
|
@@ -23,14 +24,11 @@ async function main() {
|
|
|
23
24
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
25
|
});
|
|
25
26
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
27
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
console.log("💾 LAST_UPDATEDの本をUNEXPORTEDに変更しました");
|
|
28
|
+
const commandRepository = createBooksCommandRepository(prisma);
|
|
29
|
+
const batchService = new BooksBatchDomainService(commandRepository);
|
|
30
|
+
const result = await batchService.revertBooks(userId);
|
|
31
|
+
console.log(`💾 LAST_UPDATEDの本をUNEXPORTEDに変更しました(${result.count}件)`);
|
|
34
32
|
await notificationService.notifyInfo("revert-books completed", {
|
|
35
33
|
caller: "revert-books",
|
|
36
34
|
});
|
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,
|
|
1
|
+
{"version":3,"file":"revert-books.js","sourceRoot":"","sources":["../src/revert-books.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,CAAC,wBAAwB,KAAK,EAAE,EAAE;YACtE,MAAM,EAAE,cAAc;SACtB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/dist/revert-images.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
|
+
import { ImagesBatchDomainService } from "@s-hirano-ist/s-core/images";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createImagesCommandRepository } from "./infrastructures/images-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -12,7 +14,6 @@ async function main() {
|
|
|
12
14
|
if (Object.values(env).some((v) => !v)) {
|
|
13
15
|
throw new Error("Required environment variables are not set.");
|
|
14
16
|
}
|
|
15
|
-
// Dynamic import for Prisma ESM compatibility
|
|
16
17
|
const { PrismaClient } = await import("@s-hirano-ist/s-database/generated");
|
|
17
18
|
const prisma = new PrismaClient({
|
|
18
19
|
accelerateUrl: env.DATABASE_URL ?? "",
|
|
@@ -23,14 +24,11 @@ async function main() {
|
|
|
23
24
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
25
|
});
|
|
25
26
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
27
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
console.log("💾 LAST_UPDATEDの画像をUNEXPORTEDに変更しました");
|
|
28
|
+
const commandRepository = createImagesCommandRepository(prisma);
|
|
29
|
+
const batchService = new ImagesBatchDomainService(commandRepository);
|
|
30
|
+
const result = await batchService.revertImages(userId);
|
|
31
|
+
console.log(`💾 LAST_UPDATEDの画像をUNEXPORTEDに変更しました(${result.count}件)`);
|
|
34
32
|
await notificationService.notifyInfo("revert-images completed", {
|
|
35
33
|
caller: "revert-images",
|
|
36
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revert-images.js","sourceRoot":"","sources":["../src/revert-images.ts"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"revert-images.js","sourceRoot":"","sources":["../src/revert-images.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,CAAC,yBAAyB,KAAK,EAAE,EAAE;YACvE,MAAM,EAAE,eAAe;SACvB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/dist/revert-notes.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { makeUserId } from "@s-hirano-ist/s-core/common";
|
|
3
|
+
import { NotesBatchDomainService } from "@s-hirano-ist/s-core/notes";
|
|
3
4
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
5
|
+
import { createNotesCommandRepository } from "./infrastructures/notes-command-repository.js";
|
|
4
6
|
async function main() {
|
|
5
7
|
const env = {
|
|
6
8
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -12,7 +14,6 @@ async function main() {
|
|
|
12
14
|
if (Object.values(env).some((v) => !v)) {
|
|
13
15
|
throw new Error("Required environment variables are not set.");
|
|
14
16
|
}
|
|
15
|
-
// Dynamic import for Prisma ESM compatibility
|
|
16
17
|
const { PrismaClient } = await import("@s-hirano-ist/s-database/generated");
|
|
17
18
|
const prisma = new PrismaClient({
|
|
18
19
|
accelerateUrl: env.DATABASE_URL ?? "",
|
|
@@ -23,14 +24,11 @@ async function main() {
|
|
|
23
24
|
appToken: env.PUSHOVER_APP_TOKEN ?? "",
|
|
24
25
|
});
|
|
25
26
|
const userId = makeUserId(env.USERNAME_TO_EXPORT ?? "");
|
|
26
|
-
const UNEXPORTED = makeUnexportedStatus();
|
|
27
|
-
const LAST_UPDATED = makeLastUpdatedStatus();
|
|
28
27
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
console.log("💾 LAST_UPDATEDのノートをUNEXPORTEDに変更しました");
|
|
28
|
+
const commandRepository = createNotesCommandRepository(prisma);
|
|
29
|
+
const batchService = new NotesBatchDomainService(commandRepository);
|
|
30
|
+
const result = await batchService.revertNotes(userId);
|
|
31
|
+
console.log(`💾 LAST_UPDATEDのノートをUNEXPORTEDに変更しました(${result.count}件)`);
|
|
34
32
|
await notificationService.notifyInfo("revert-notes completed", {
|
|
35
33
|
caller: "revert-notes",
|
|
36
34
|
});
|
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,
|
|
1
|
+
{"version":3,"file":"revert-notes.js","sourceRoot":"","sources":["../src/revert-notes.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,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,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC/B,aAAa,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,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,CAAC,wBAAwB,KAAK,EAAE,EAAE;YACtE,MAAM,EAAE,cAAc;SACtB,CAAC,CAAC;QACH,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,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@s-hirano-ist/s-scripts",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "CLI scripts for s-private data operations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -37,21 +37,21 @@
|
|
|
37
37
|
"access": "public"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@huggingface/transformers": "3.
|
|
41
|
-
"@qdrant/js-client-rest": "1.
|
|
42
|
-
"glob": "
|
|
43
|
-
"jsdom": "
|
|
40
|
+
"@huggingface/transformers": "3.8.1",
|
|
41
|
+
"@qdrant/js-client-rest": "1.16.2",
|
|
42
|
+
"glob": "13.0.0",
|
|
43
|
+
"jsdom": "27.4.0",
|
|
44
44
|
"minio": "8.0.5",
|
|
45
45
|
"turndown": "7.2.0",
|
|
46
|
-
"@s-hirano-ist/s-
|
|
47
|
-
"@s-hirano-ist/s-
|
|
48
|
-
"@s-hirano-ist/s-notification": "1.
|
|
46
|
+
"@s-hirano-ist/s-database": "1.7.1",
|
|
47
|
+
"@s-hirano-ist/s-core": "1.7.1",
|
|
48
|
+
"@s-hirano-ist/s-notification": "1.7.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@types/jsdom": "
|
|
52
|
-
"@types/node": "
|
|
51
|
+
"@types/jsdom": "27.0.0",
|
|
52
|
+
"@types/node": "24.10.4",
|
|
53
53
|
"@types/turndown": "5.0.5",
|
|
54
|
-
"tsx": "4.
|
|
54
|
+
"tsx": "4.21.0",
|
|
55
55
|
"typescript": "5.9.3"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|