MCPcopy Index your code
hub / github.com/ether/etherpad / deleteRevisions

Function deleteRevisions

src/node/utils/Cleanup.ts:43–137  ·  view source on GitHub ↗
(padId: string, keepRevisions: number)

Source from the content-addressed store, hash-verified

41}
42
43export const deleteRevisions = async (padId: string, keepRevisions: number): Promise<boolean> => {
44
45 logger.debug('Start cleanup revisions', padId)
46
47 let pad = await padManager.getPad(padId);
48 await pad.check()
49
50 logger.debug('Initial pad is valid')
51
52 if (pad.head <= keepRevisions) {
53 logger.debug('Pad has not enough revisions')
54 return false
55 }
56
57 padMessageHandler.kickSessionsFromPad(padId)
58
59 const cleanupUntilRevision = pad.head - keepRevisions
60 logger.debug('Composing changesets: ', cleanupUntilRevision)
61 const changeset = await padMessageHandler.composePadChangesets(pad, 0, cleanupUntilRevision + 1)
62
63 const revisions: Revision[] = [];
64
65 await timesLimit(keepRevisions + 1, 500, async (i: number) => {
66 const rev = i + cleanupUntilRevision
67 revisions[rev] = await pad.getRevision(rev)
68 });
69
70 logger.debug('Loaded revisions: ', revisions.length)
71
72 await timesLimit(pad.head + 1, 500, async (i: string) => {
73 await db.remove(`pad:${padId}:revs:${i}`, null);
74 });
75
76 let padContent = await db.get(`pad:${padId}`)
77 padContent.head = keepRevisions
78 if (padContent.savedRevisions) {
79 let newSavedRevisions = []
80
81 for (let i = 0; i < padContent.savedRevisions.length; i++) {
82 if (padContent.savedRevisions[i].revNum > cleanupUntilRevision) {
83 padContent.savedRevisions[i].revNum = padContent.savedRevisions[i].revNum - cleanupUntilRevision
84 newSavedRevisions.push(padContent.savedRevisions[i])
85 }
86 }
87 padContent.savedRevisions = newSavedRevisions
88 }
89 await db.set(`pad:${padId}`, padContent);
90
91 let newAText = Changeset.makeAText('\n');
92 let pool = pad.apool()
93
94 newAText = Changeset.applyToAText(changeset, newAText, pool);
95
96 const revision = await createRevision(
97 changeset,
98 revisions[cleanupUntilRevision].meta.timestamp,
99 0 === pad.getKeyRevisionNumber(0),
100 '',

Callers 2

adminsettings.tsFile · 0.90
checkTodosFunction · 0.85

Calls 10

timesLimitFunction · 0.90
createRevisionFunction · 0.85
getRevisionMethod · 0.80
getMethod · 0.80
pushMethod · 0.80
setMethod · 0.80
apoolMethod · 0.80
getKeyRevisionNumberMethod · 0.80
checkMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected