feat(revisions): add procedure for transitioning data from primary to… · standardnotes/server@fe273a9 · GitHub
Skip to content

Commit fe273a9

Browse files
authored
feat(revisions): add procedure for transitioning data from primary to secondary database (#787)
* feat(revisions): add procedure for transitioning data from primary to secondary database * fix: transition status updating for both items and revisions * fix: dependabot
1 parent 06170d8 commit fe273a9

28 files changed

Lines changed: 733 additions & 35 deletions

‎.github/dependabot.yml‎

Lines changed: 10 additions & 0 deletions

‎docker/localstack_bootstrap.sh‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ echo "linking topic $FILES_TOPIC_ARN to queue $AUTH_QUEUE_ARN"
122122
LINKING_RESULT=$(link_queue_and_topic $FILES_TOPIC_ARN $AUTH_QUEUE_ARN)
123123
echo "linking done:"
124124
echo "$LINKING_RESULT"
125+
echo "linking topic $REVISIONS_TOPIC_ARN to queue $AUTH_QUEUE_ARN"
126+
LINKING_RESULT=$(link_queue_and_topic $REVISIONS_TOPIC_ARN $AUTH_QUEUE_ARN)
127+
echo "linking done:"
128+
echo "$LINKING_RESULT"
125129

126130
QUEUE_NAME="files-local-queue"
127131

‎packages/auth/src/Domain/Handler/TransitionStatusUpdatedEventHandler.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export class TransitionStatusUpdatedEventHandler implements DomainEventHandlerIn
99
const result = await this.updateTransitionStatusUseCase.execute({
1010
status: event.payload.status,
1111
userUuid: event.payload.userUuid,
12+
transitionType: event.payload.transitionType,
1213
})
1314

1415
if (result.isFailed()) {
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export interface TransitionStatusRepositoryInterface {
2-
updateStatus(userUuid: string, status: 'STARTED' | 'FAILED'): Promise<void>
3-
removeStatus(userUuid: string): Promise<void>
4-
getStatus(userUuid: string): Promise<'STARTED' | 'FAILED' | null>
2+
updateStatus(userUuid: string, transitionType: 'items' | 'revisions', status: 'STARTED' | 'FAILED'): Promise<void>
3+
removeStatus(userUuid: string, transitionType: 'items' | 'revisions'): Promise<void>
4+
getStatus(userUuid: string, transitionType: 'items' | 'revisions'): Promise<'STARTED' | 'FAILED' | null>
55
}

‎packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export class CreateCrossServiceToken implements UseCaseInterface<string> {
4545
return Result.fail(`Could not find user with uuid ${dto.userUuid}`)
4646
}
4747

48-
const transitionStatus = await this.transitionStatusRepository.getStatus(user.uuid)
48+
const transitionStatus = await this.transitionStatusRepository.getStatus(user.uuid, 'items')
4949

5050
const roles = await user.roles
5151

‎packages/auth/src/Domain/UseCase/GetTransitionStatus/GetTransitionStatus.spec.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ describe('GetTransitionStatus', () => {
3939

4040
const result = await useCase.execute({
4141
userUuid: '00000000-0000-0000-0000-000000000000',
42+
transitionType: 'items',
4243
})
4344

4445
expect(result.isFailed()).toBeFalsy()
@@ -52,6 +53,7 @@ describe('GetTransitionStatus', () => {
5253

5354
const result = await useCase.execute({
5455
userUuid: '00000000-0000-0000-0000-000000000000',
56+
transitionType: 'items',
5557
})
5658

5759
expect(result.isFailed()).toBeFalsy()
@@ -63,6 +65,7 @@ describe('GetTransitionStatus', () => {
6365

6466
const result = await useCase.execute({
6567
userUuid: '00000000-0000-0000-0000-000000000000',
68+
transitionType: 'items',
6669
})
6770

6871
expect(result.isFailed()).toBeFalsy()
@@ -76,6 +79,7 @@ describe('GetTransitionStatus', () => {
7679

7780
const result = await useCase.execute({
7881
userUuid: '00000000-0000-0000-0000-000000000000',
82+
transitionType: 'items',
7983
})
8084

8185
expect(result.isFailed()).toBeFalsy()
@@ -87,6 +91,7 @@ describe('GetTransitionStatus', () => {
8791

8892
const result = await useCase.execute({
8993
userUuid: 'invalid',
94+
transitionType: 'items',
9095
})
9196

9297
expect(result.isFailed()).toBeTruthy()
@@ -100,6 +105,7 @@ describe('GetTransitionStatus', () => {
100105

101106
const result = await useCase.execute({
102107
userUuid: '00000000-0000-0000-0000-000000000000',
108+
transitionType: 'items',
103109
})
104110

105111
expect(result.isFailed()).toBeTruthy()

‎packages/auth/src/Domain/UseCase/GetTransitionStatus/GetTransitionStatus.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class GetTransitionStatus implements UseCaseInterface<'TO-DO' | 'STARTED'
2929
}
3030
}
3131

32-
const transitionStatus = await this.transitionStatusRepository.getStatus(userUuid.value)
32+
const transitionStatus = await this.transitionStatusRepository.getStatus(userUuid.value, dto.transitionType)
3333
if (transitionStatus === null) {
3434
return Result.ok('TO-DO')
3535
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export interface GetTransitionStatusDTO {
22
userUuid: string
3+
transitionType: 'items' | 'revisions'
34
}

‎packages/auth/src/Domain/UseCase/UpdateTransitionStatus/UpdateTransitionStatus.spec.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,14 @@ describe('UpdateTransitionStatus', () => {
2525
const result = await useCase.execute({
2626
userUuid: '00000000-0000-0000-0000-000000000000',
2727
status: 'FINISHED',
28+
transitionType: 'items',
2829
})
2930

3031
expect(result.isFailed()).toBeFalsy()
31-
expect(transitionStatusRepository.removeStatus).toHaveBeenCalledWith('00000000-0000-0000-0000-000000000000')
32+
expect(transitionStatusRepository.removeStatus).toHaveBeenCalledWith(
33+
'00000000-0000-0000-0000-000000000000',
34+
'items',
35+
)
3236
expect(roleService.addRoleToUser).toHaveBeenCalledWith(
3337
Uuid.create('00000000-0000-0000-0000-000000000000').getValue(),
3438
RoleName.create(RoleName.NAMES.TransitionUser).getValue(),
@@ -41,11 +45,13 @@ describe('UpdateTransitionStatus', () => {
4145
const result = await useCase.execute({
4246
userUuid: '00000000-0000-0000-0000-000000000000',
4347
status: 'STARTED',
48+
transitionType: 'items',
4449
})
4550

4651
expect(result.isFailed()).toBeFalsy()
4752
expect(transitionStatusRepository.updateStatus).toHaveBeenCalledWith(
4853
'00000000-0000-0000-0000-000000000000',
54+
'items',
4955
'STARTED',
5056
)
5157
})
@@ -56,6 +62,7 @@ describe('UpdateTransitionStatus', () => {
5662
const result = await useCase.execute({
5763
userUuid: 'invalid',
5864
status: 'STARTED',
65+
transitionType: 'items',
5966
})
6067

6168
expect(result.isFailed()).toBeTruthy()

‎packages/auth/src/Domain/UseCase/UpdateTransitionStatus/UpdateTransitionStatus.ts‎

Lines changed: 2 additions & 2 deletions

0 commit comments

Comments
 (0)