Showing 4 changed files with 69 additions and 38 deletions
+23 -8
lib/Gitprep.pm
... ...
@@ -202,6 +202,29 @@ sub startup {
202 202
         'left join project as __project on collaboration.project = __project.row_id',
203 203
       ]
204 204
     },
205
+    {
206
+      table => 'issue',
207
+      join => [
208
+        'left join pull_request as __pull_request on issue.pull_request = __pull_request.row_id',
209
+        
210
+        'left join user as __open_user on issue.open_user = __open_user.row_id',
211
+        'left join project as __pull_request__base_project on __pull_request.base_project = __pull_request__base_project.row_id',
212
+        'left join user as __pull_request__base_project__user'
213
+          . ' on __pull_request__base_project.user = __pull_request__base_project__user.row_id',
214
+        'left join project as __pull_request__target_project on __pull_request.target_project = __pull_request__target_project.row_id',
215
+        'left join user as __pull_request__target_project__user'
216
+          . ' on __pull_request__target_project.user = __pull_request__target_project__user.row_id'
217
+
218
+      ]
219
+    },
220
+    {
221
+      table => 'issue_message',
222
+      primary_key => 'row_id',
223
+      join => [
224
+        'left join user as __user on issue_message.user = __user.row_id',
225
+        'left join issue as __issue on issue_message.issue = __issue.row_id'
226
+      ]
227
+    },
205 228
     {
206 229
       table => 'pull_request',
207 230
       primary_key => 'row_id',
... ...
@@ -215,14 +238,6 @@ sub startup {
215 238
           . ' on __target_project.user = __target_project__user.row_id'
216 239
       ]
217 240
     },
218
-    {
219
-      table => 'pull_request_message',
220
-      primary_key => 'row_id',
221
-      join => [
222
-        'left join user as __user on pull_request_message.user = __user.row_id',
223
-        'left join pull_request as __pull_request on pull_request_message.pull_request = __pull_request.row_id'
224
-      ]
225
-    }
226 241
   ];
227 242
   $dbi->create_model($_) for @$models;
228 243
   $dbi->setup_model;
+12 -12
templates/compare.html.ep
... ...
@@ -98,7 +98,7 @@
98 98
             where => {id => $base_user_id}
99 99
           )->value;
100 100
           
101
-          my $new_pull_request_row_id;
101
+          my $new_issue_row_id;
102 102
           my $session_user_row_id = $api->session_user_row_id;
103 103
           app->dbi->connector->txn(sub {
104 104
             # New pull request
... ...
@@ -115,20 +115,20 @@
115 115
             
116 116
             app->dbi->model('pull_request')->insert($new_pull_request_params);
117 117
             
118
-            $new_pull_request_row_id = app->dbi->model('pull_request')->select(
118
+            $new_issue_row_id = app->dbi->model('issue')->select(
119 119
               'row_id',
120 120
               where => {
121
-                base_project => $project_row_id,
122
-                base_branch => $base_branch,
123
-                target_project => $target_project->{row_id},
124
-                target_branch => $target_branch
121
+                '__pull_request.base_project' => $project_row_id,
122
+                '__pull_request.base_branch' => $base_branch,
123
+                '__pull_request.target_project' => $target_project->{row_id},
124
+                '__pull_request.target_branch' => $target_branch
125 125
               }
126 126
             )->value;
127 127
             
128 128
             # Get pull request message number
129
-            my $number = app->dbi->model('pull_request_message')->select(
129
+            my $number = app->dbi->model('issue_message')->select(
130 130
               'max(number)',
131
-              where => {pull_request => $new_pull_request_row_id},
131
+              where => {issue => $new_issue_row_id},
132 132
               append => 'group by number'
133 133
             )->value;
134 134
             
... ...
@@ -137,8 +137,8 @@
137 137
             my $new_number = $number + 1;
138 138
             
139 139
             # New pull request message
140
-            my $new_pull_request_message_params = {
141
-              pull_request => $new_pull_request_row_id,
140
+            my $new_issue_message_params = {
141
+              issue => $new_issue_row_id,
142 142
               number => $new_number,
143 143
               message => $message,
144 144
               create_time => $now_epoch,
... ...
@@ -146,10 +146,10 @@
146 146
               user => $session_user_row_id
147 147
             };
148 148
             
149
-            app->dbi->model('pull_request_message')->insert($new_pull_request_message_params);
149
+            app->dbi->model('issue_message')->insert($new_issue_message_params);
150 150
           });
151 151
           
152
-          $self->redirect_to("/$base_user_id/$base_project_id/pull/$new_pull_request_row_id");
152
+          $self->redirect_to("/$base_user_id/$base_project_id/pull/$new_issue_row_id");
153 153
           return;
154 154
         }
155 155
       }
+4 -4
templates/pull.html.ep
... ...
@@ -180,7 +180,7 @@
180 180
   my $end_commit = $git->get_commit($target_rep_info, $target_branch);
181 181
   
182 182
   # Pull request first message 
183
-  my $pull_request_message_first = app->dbi->model('pull_request_message')->select(
183
+  my $issue_message_first = app->dbi->model('issue_message')->select(
184 184
     [
185 185
       {__MY__ => '*'},
186 186
       {__user => ['id']}
... ...
@@ -308,14 +308,14 @@
308 308
         </ul>
309 309
         <div class="pull-comment">
310 310
           <div class="pull-comment-header">
311
-            <b><%= $pull_request_message_first->{'__open_user.id'} %></b>
311
+            <b><%= $issue_message_first->{'__open_user.id'} %></b>
312 312
             <span style="color:#767676">
313 313
               commented
314
-              <%= $api->age_string($pull_request_message_first->{update_time}) %>
314
+              <%= $api->age_string($issue_message_first->{update_time}) %>
315 315
             </span>
316 316
           </div>
317 317
           <div class="pull-comment-body">
318
-            <%= $pull_request_message_first->{message} %>
318
+            <%= $issue_message_first->{message} %>
319 319
           </div>
320 320
         </div>
321 321
         
+30 -14
templates/pulls.html.ep
... ...
@@ -13,20 +13,36 @@
13 13
   # Git
14 14
   my $git = $self->app->git;
15 15
   
16
-  # Pull requests
17
-  my $pull_requests = app->dbi->model('pull_request')->select(
16
+  # Issues which have pull request
17
+  my $issues = app->dbi->model('issue')->select(
18 18
     [
19 19
       {__MY__ => '*'},
20
-      {__open_user => ['id']}
20
+      {__open_user => ['id']},
21
+      {__pull_request => ['target_branch']}
21 22
     ],
22
-    where => {open => $open}
23
+    where => [
24
+      ['and', ':issue.open{=}', ':pull_request{<>}'],
25
+      {'issue.open' => $open, pull_request => 0}
26
+    ]
23 27
   )->all;
24 28
   
25 29
   # Open count
26
-  my $open_count = app->dbi->model('pull_request')->select('count(*)', where => {open => 1})->value;
30
+  my $open_count = app->dbi->model('issue')->select(
31
+    'count(*)',
32
+    where => [
33
+      ['and', ':issue.open{=}', ':pull_request{<>}'],
34
+      {'issue.open' => 1, pull_request => 0}
35
+    ]
36
+  )->value;
27 37
   
28 38
   # Close count
29
-  my $close_count = app->dbi->model('pull_request')->select('count(*)', where => {open => 0})->value;
39
+  my $close_count = app->dbi->model('issue')->select(
40
+    'count(*)',
41
+    where => [
42
+      ['and', ':issue.open{=}', ':pull_request{<>}'],
43
+      {'issue.open' => 0, pull_request => 0}
44
+    ]
45
+  )->value;
30 46
 %>
31 47
 
32 48
 % layout 'common', title => "Pull Requests Tags \x{30fb} $user_id/$project_id";
... ...
@@ -50,26 +66,26 @@
50 66
         % }
51 67
       </div>
52 68
       <div class="pulls-body">
53
-        % if (@$pull_requests) {
69
+        % if (@$issues) {
54 70
           <ul>
55
-            % for my $pull_request (@$pull_requests) {
71
+            % for my $issue (@$issues) {
56 72
               <%
57
-                my $target_branch = $pull_request->{target_branch};
73
+                my $target_branch = $issue->{'__pull_request.target_branch'};
58 74
                 my $commit = app->git->get_commit(app->rep_info($user_id, $project_id), $target_branch);
59
-                my $open_time = $pull_request->{open_time};
75
+                my $open_time = $issue->{open_time};
60 76
                 my $open_time_age = Time::Moment->now->epoch - $open_time;
61 77
                 my $open_time_age_string = $self->app->git->_age_string($open_time_age);
62 78
               %>
63 79
               <li>
64 80
                 <div class="pulls-title">
65
-                  <a href="<%= "/$user_id/$project_id/pull/$pull_request->{row_id}" %>">
66
-                    <b><%= $pull_request->{title} %></b>
81
+                  <a href="<%= "/$user_id/$project_id/pull/$issue->{row_id}" %>">
82
+                    <b><%= $issue->{title} %></b>
67 83
                   </a>
68 84
                 </div>
69 85
                 <div class="pulls-description">
70
-                  #<%= $pull_request->{row_id} %> <%= $pull_request->{open} ? 'opened' : 'closed' %>
86
+                  #<%= $issue->{row_id} %> <%= $issue->{open} ? 'opened' : 'closed' %>
71 87
                   <%= $open_time_age_string %>
72
-                  by <%= $pull_request->{'__open_user.id'} %>
88
+                  by <%= $issue->{'__open_user.id'} %>
73 89
                 </div>
74 90
               </li>
75 91
             % }