Showing 2 changed files with 48 additions and 2 deletions
+2 -1
README.md
... ...
@@ -43,7 +43,8 @@ Setup database.
43 43
 
44 44
     ./setup_database
45 45
 
46
-If you used Gitprep version 1 from now, you need upgrade database.
46
+If you used Gitprep version 1 and upgrage it to version 2, you need upgrade database
47
+by the following command.
47 48
 
48 49
     mv data/gitprep.db data/gitprep_v1bak.db
49 50
     ./setup_database
+46 -1
old/copy_database_v1_to_v2
... ...
@@ -151,7 +151,52 @@ unless ($new_ssh_public_key_count) {
151 151
   }
152 152
 }
153 153
 
154
+# Copy collaboration data
155
+my $old_collaborations = $old_dbi->select(table => 'collaboration')->all;
156
+my $new_collaboration_count = $new_dbi->select('count(*)', table => 'collaboration')->value;
157
+unless ($new_collaboration_count) {
158
+  for my $old_collaboration (@$old_collaborations) {
159
+    
160
+    my @new_collaboration_columns = qw(
161
+      row_id
162
+    );
163
+    
164
+    my $new_collaboration = {};
165
+    for my $new_collaboration_column (@new_collaboration_columns) {
166
+      if (exists $old_collaboration->{$new_collaboration_column}) {
167
+        $new_collaboration->{$new_collaboration_column} = $old_collaboration->{$new_collaboration_column};
168
+      }
169
+    }
170
+
171
+    # collaborator_id is copied to collaborator, which is converted to user.row_id
172
+    my $user_row_id = $old_dbi->select(
173
+      'row_id',
174
+      table => 'user',
175
+      where => {id => $old_collaboration->{collaborator_id}}
176
+    )->value;
177
+    if (defined $user_row_id) {
178
+      $new_collaboration->{collaborator} = $user_row_id;
179
+    }
180
+    else {
181
+      next;
182
+    }
183
+    
184
+    my $project_row_id = $old_dbi->select(
185
+      'row_id',
186
+      table => 'project',
187
+      where => {name => $old_collaboration->{project_name}}
188
+    )->value;
189
+    if (defined $project_row_id) {
190
+      $new_collaboration->{project} = $project_row_id;
191
+    }
192
+    else {
193
+      next;
194
+    }
195
+    
196
+    $new_dbi->insert($new_collaboration, table => 'collaboration');
197
+  }
198
+}
199
+
154 200
 =pod
155 201
 collaboration
156
-ssh_public_key
157 202
 =cut