forked from microsoft/FluidFramework
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcheckpointManager.ts
More file actions
84 lines (75 loc) · 1.79 KB
/
checkpointManager.ts
File metadata and controls
84 lines (75 loc) · 1.79 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*!
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
* Licensed under the MIT License.
*/
import type {
ICheckpointService,
IDeliState,
IQueuedMessage,
} from "@fluidframework/server-services-core";
import type { CheckpointReason } from "../utils";
/**
* @internal
*/
export interface IDeliCheckpointManager {
writeCheckpoint(
checkpoint: IDeliState,
isLocal: boolean,
reason: CheckpointReason,
): Promise<void>;
deleteCheckpoint(checkpointParams: ICheckpointParams, isLocal: boolean): Promise<void>;
}
/**
* @internal
*/
export interface ICheckpointParams {
/**
* The reason why this checkpoint was triggered
*/
reason: CheckpointReason;
/**
* The deli checkpoint state \@ deliCheckpointMessage
*/
deliState: IDeliState;
/**
* The message to checkpoint for deli (mongodb)
*/
deliCheckpointMessage: IQueuedMessage;
/**
* The message to checkpoint for kafka
*/
kafkaCheckpointMessage: IQueuedMessage | undefined;
/**
* Flag that decides if the deli checkpoint should be deleted
*/
clear?: boolean;
}
// TODO: documentation
// eslint-disable-next-line jsdoc/require-description
/**
* @internal
*/
export function createDeliCheckpointManagerFromCollection(
tenantId: string,
documentId: string,
checkpointService: ICheckpointService,
): IDeliCheckpointManager {
const checkpointManager = {
writeCheckpoint: async (checkpoint: IDeliState, isLocal: boolean): Promise<void> => {
return checkpointService.writeCheckpoint(
documentId,
tenantId,
"deli",
checkpoint,
isLocal,
);
},
deleteCheckpoint: async (
checkpointParams: ICheckpointParams,
isLocal: boolean,
): Promise<void> => {
return checkpointService.clearCheckpoint(documentId, tenantId, "deli", isLocal);
},
};
return checkpointManager;
}