generated from payloadcms/plugin-template
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathdocsReorderSetupScript.ts
65 lines (51 loc) · 1.66 KB
/
docsReorderSetupScript.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { config } from 'dotenv';
import { resolve } from 'path';
import type { GeneratedTypes } from 'payload';
import { getPayload } from 'payload';
import { importConfig } from 'payload/node';
import type { PayloadRequest } from 'payload/types';
config({
path: resolve(import.meta.dirname, './../../.env'),
});
const collections: (keyof GeneratedTypes['collections'])[] = ['docs-reoder-examples'];
const docsReorderSetupScript = async () => {
const payload = await getPayload({
config: importConfig('../../payload.config.ts'),
});
payload.logger.info('Starting...');
const req = {} as PayloadRequest;
const transactionId = await payload.db.beginTransaction?.();
if (transactionId !== null) req.transactionID = transactionId;
try {
for (const slug of collections) {
const { docs } = await payload.find({
collection: slug,
pagination: false,
req,
sort: '-createdAt',
});
const promises: Promise<unknown>[] = [];
docs.forEach((doc, index) => {
promises.push(
payload.update({
collection: slug,
data: { docOrder: index + 1 } as any,
id: doc.id,
req,
}),
);
});
for (const promise of promises) {
await promise;
}
}
payload.logger.info('Success');
if (req.transactionID) await payload.db.commitTransaction?.(req.transactionID);
} catch (e) {
if (e instanceof Error) payload.logger.error(e);
payload.logger.error('Rollback script changes...');
if (req.transactionID) await payload.db.rollbackTransaction?.(req.transactionID);
}
process.exit(0);
};
docsReorderSetupScript();