2
2
/* eslint-disable @typescript-eslint/no-unsafe-argument */
3
3
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
4
4
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- import { Operator , QueryBuilder } from "@topcoder-framework/client-relational" ;
5
+ import { QueryBuilder } from "@topcoder-framework/client-relational" ;
6
6
import { ChallengeDomain } from "@topcoder-framework/domain-challenge" ;
7
7
import _ from "lodash" ;
8
8
import { queryRunner } from "../helper/QueryRunner" ;
9
9
10
+ import { Challenge } from "@topcoder-framework/domain-challenge/dist-es/models/domain-layer/challenge/challenge" ;
11
+ import { Operator } from "@topcoder-framework/lib-common" ;
10
12
import LegacyChallengeDomain from "../domain/LegacyChallenge" ;
11
13
import { LegacyChallenge , LegacyChallengeId } from "../models/domain-layer/legacy/challenge" ;
12
14
import { SyncInput , Table } from "../models/domain-layer/legacy/sync" ;
13
15
16
+ const challengeDomain = new ChallengeDomain (
17
+ process . env . GRPC_CHALLENGE_DOMAIN_SERVER_HOST ! ,
18
+ process . env . GRPC_CHALLENGE_DOMAIN_SERVER_PORT !
19
+ ) ;
20
+
14
21
class LegacySyncDomain {
15
22
public async syncLegacy ( input : SyncInput ) : Promise < void > {
16
23
const legacyId = input . projectId ;
17
24
const payload = { } ;
18
25
const legacyChallenge = await LegacyChallengeDomain . getLegacyChallenge (
19
26
LegacyChallengeId . create ( { legacyChallengeId : legacyId } )
20
27
) ;
28
+ const { items } = await challengeDomain . scan ( {
29
+ criteria : [ { key : "legacyId" , operator : Operator . OPERATOR_EQUAL , value : legacyId } ] ,
30
+ } ) ;
31
+ const v5Challenge : Challenge = items [ 0 ] ;
32
+
21
33
for ( const table of input . updatedTables ) {
22
34
switch ( table . table ) {
23
35
case "project" :
24
- _ . assign ( payload , this . handleProjectUpdate ( table . value , legacyChallenge ) ) ;
36
+ _ . assign ( payload , this . handleProjectUpdate ( table . value , legacyChallenge , v5Challenge ) ) ;
25
37
break ;
26
38
case "project_phase" :
27
39
break ;
@@ -42,12 +54,16 @@ class LegacySyncDomain {
42
54
}
43
55
}
44
56
45
- private handleProjectUpdate ( columnNames : string [ ] , legacyChallenge : LegacyChallenge ) {
57
+ private handleProjectUpdate (
58
+ columnNames : string [ ] ,
59
+ legacyChallenge : LegacyChallenge ,
60
+ v5Challenge : Challenge
61
+ ) {
46
62
const payload = { } ;
47
63
for ( const columnName of columnNames ) {
48
64
switch ( columnName ) {
49
65
case "project_status_id" :
50
- _ . assign ( payload , this . handleStatusChange ( legacyChallenge , { } ) ) ;
66
+ _ . assign ( payload , this . handleStatusChange ( legacyChallenge , v5Challenge ) ) ;
51
67
break ;
52
68
case "project_category_id" :
53
69
break ;
@@ -58,30 +74,51 @@ class LegacySyncDomain {
58
74
}
59
75
}
60
76
61
- private handleStatusChange ( legacyChallenge : LegacyChallenge , v5Challenge ) {
62
- const challengeStatusOrders = {
77
+ private handleStatusChange ( legacyChallenge : LegacyChallenge , v5Challenge : Challenge ) {
78
+ interface IchallengeStatusOrders {
79
+ Draft : number ;
80
+ Active : number ;
81
+ Completed : number ;
82
+ Deleted : number ;
83
+ Cancelled : number ;
84
+ }
85
+ const challengeStatusOrders : IchallengeStatusOrders = {
63
86
Draft : 1 ,
64
87
Active : 2 ,
65
88
Completed : 3 ,
66
89
Deleted : 3 ,
67
90
Cancelled : 3 ,
68
91
} ;
69
- const challengeStatusMap = {
92
+ interface IchallengeStatusMap {
93
+ 1 : string ;
94
+ 2 : string ;
95
+ 3 : string ;
96
+ 7 : string ;
97
+ }
98
+ const challengeStatusMap : IchallengeStatusMap = {
70
99
1 : "Active" ,
71
100
2 : "Draft" ,
72
101
3 : "Deleted" ,
73
102
7 : "Completed" ,
74
103
} ;
75
- /*
76
- const v4StatusNumber = challengeStatusOrders[challengeStatusMap[legacyChallenge.projectStatusId]] || challengeStatusOrders.Cancelled
77
- const v5StatusNumber = challengeStatusOrders[v5Challenge.status] || challengeStatusOrders.Cancelled
104
+
105
+ const v4StatusNumber =
106
+ challengeStatusOrders [
107
+ challengeStatusMap [
108
+ legacyChallenge . projectStatusId as keyof IchallengeStatusMap
109
+ ] as keyof IchallengeStatusOrders
110
+ ] || challengeStatusOrders . Cancelled ;
111
+ const v5StatusNumber =
112
+ challengeStatusOrders [ v5Challenge . status as keyof IchallengeStatusOrders ] ||
113
+ challengeStatusOrders . Cancelled ;
78
114
79
115
if ( v4StatusNumber >= v5StatusNumber ) {
80
- return { status: challengeStatusMap[legacyChallenge.projectStatusId] }
116
+ return {
117
+ status : challengeStatusMap [ legacyChallenge . projectStatusId as keyof IchallengeStatusMap ] ,
118
+ } ;
81
119
} else {
82
- return {}
120
+ return { } ;
83
121
}
84
- */
85
122
}
86
123
}
87
124
0 commit comments