@@ -82,51 +82,73 @@ func createReviewsForCodeComments(x *xorm.Engine) error {
82
82
if err := x .Sync2 (new (Review ), new (Comment )); err != nil {
83
83
return err
84
84
}
85
- sess := x .NewSession ()
86
- defer sess .Close ()
87
- if err := sess .Begin (); err != nil {
88
- return err
89
- }
90
- if err := sess .Where ("review_id = 0 and type = 21" ).Iterate (new (Comment ), func (idx int , bean interface {}) error {
91
- comment := bean .(* Comment )
92
-
93
- review := & Review {
94
- Type : ReviewTypeComment ,
95
- ReviewerID : comment .PosterID ,
96
- IssueID : comment .IssueID ,
97
- Official : false ,
98
- CommitID : comment .CommitSHA ,
99
- Stale : comment .Invalidated ,
100
- OriginalAuthor : comment .OriginalAuthor ,
101
- OriginalAuthorID : comment .OriginalAuthorID ,
102
- CreatedUnix : comment .CreatedUnix ,
103
- UpdatedUnix : comment .CreatedUnix ,
104
- }
105
- if _ , err := sess .NoAutoTime ().Insert (review ); err != nil {
85
+
86
+ var updateComment = func (comments []* Comment ) error {
87
+ sess := x .NewSession ()
88
+ defer sess .Close ()
89
+ if err := sess .Begin (); err != nil {
106
90
return err
107
91
}
108
92
109
- reviewComment := & Comment {
110
- Type : 22 ,
111
- PosterID : comment .PosterID ,
112
- Content : "" ,
113
- IssueID : comment .IssueID ,
114
- ReviewID : review .ID ,
115
- OriginalAuthor : comment .OriginalAuthor ,
116
- OriginalAuthorID : comment .OriginalAuthorID ,
117
- CreatedUnix : comment .CreatedUnix ,
118
- UpdatedUnix : comment .CreatedUnix ,
93
+ for _ , comment := range comments {
94
+ review := & Review {
95
+ Type : ReviewTypeComment ,
96
+ ReviewerID : comment .PosterID ,
97
+ IssueID : comment .IssueID ,
98
+ Official : false ,
99
+ CommitID : comment .CommitSHA ,
100
+ Stale : comment .Invalidated ,
101
+ OriginalAuthor : comment .OriginalAuthor ,
102
+ OriginalAuthorID : comment .OriginalAuthorID ,
103
+ CreatedUnix : comment .CreatedUnix ,
104
+ UpdatedUnix : comment .CreatedUnix ,
105
+ }
106
+ if _ , err := sess .NoAutoTime ().Insert (review ); err != nil {
107
+ return err
108
+ }
109
+
110
+ reviewComment := & Comment {
111
+ Type : 22 ,
112
+ PosterID : comment .PosterID ,
113
+ Content : "" ,
114
+ IssueID : comment .IssueID ,
115
+ ReviewID : review .ID ,
116
+ OriginalAuthor : comment .OriginalAuthor ,
117
+ OriginalAuthorID : comment .OriginalAuthorID ,
118
+ CreatedUnix : comment .CreatedUnix ,
119
+ UpdatedUnix : comment .CreatedUnix ,
120
+ }
121
+ if _ , err := sess .NoAutoTime ().Insert (reviewComment ); err != nil {
122
+ return err
123
+ }
124
+
125
+ comment .ReviewID = review .ID
126
+ if _ , err := sess .ID (comment .ID ).Cols ("review_id" ).NoAutoTime ().Update (comment ); err != nil {
127
+ return err
128
+ }
129
+ }
130
+
131
+ return sess .Commit ()
132
+ }
133
+
134
+ var start = 0
135
+ var batchSize = 100
136
+ for {
137
+ var comments = make ([]* Comment , 0 , batchSize )
138
+ if err := x .Where ("review_id = 0 and type = 21" ).Limit (batchSize , start ).Find (& comments ); err != nil {
139
+ return err
119
140
}
120
- if _ , err := sess .NoAutoTime ().Insert (reviewComment ); err != nil {
141
+
142
+ if err := updateComment (comments ); err != nil {
121
143
return err
122
144
}
123
145
124
- comment . ReviewID = review . ID
125
- _ , err := sess . ID ( comment . ID ). Cols ( "review_id" ). NoAutoTime (). Update ( comment )
126
- return err
127
- }); err != nil {
128
- return err
146
+ start += len ( comments )
147
+
148
+ if len ( comments ) < batchSize {
149
+ break
150
+ }
129
151
}
130
152
131
- return sess . Commit ()
153
+ return nil
132
154
}
0 commit comments