@@ -39,15 +39,12 @@ pub(super) async fn command_approve(
3939 approver : approver. clone ( ) ,
4040 sha : pr. head . sha . to_string ( ) ,
4141 } ;
42- db. approve (
43- repo_state. repository ( ) ,
44- pr. number ,
45- approval_info,
46- priority,
47- & pr. base . name ,
48- rollup,
49- )
50- . await ?;
42+ let pr_model = db
43+ . get_or_create_pull_request ( repo_state. repository ( ) , pr. number , & pr. base . name )
44+ . await ?;
45+
46+ db. approve ( & pr_model, approval_info, priority, rollup)
47+ . await ?;
5148 handle_label_trigger ( & repo_state, pr. number , LabelTrigger :: Approved ) . await ?;
5249 notify_of_approval ( & repo_state, pr, approver. as_str ( ) ) . await
5350}
@@ -65,8 +62,11 @@ pub(super) async fn command_unapprove(
6562 deny_request ( & repo_state, pr, author, PermissionType :: Review ) . await ?;
6663 return Ok ( ( ) ) ;
6764 } ;
68- db. unapprove ( repo_state. repository ( ) , pr. number , & pr. base . name )
65+ let pr_model = db
66+ . get_or_create_pull_request ( repo_state. repository ( ) , pr. number , & pr. base . name )
6967 . await ?;
68+
69+ db. unapprove ( & pr_model) . await ?;
7070 handle_label_trigger ( & repo_state, pr. number , LabelTrigger :: Unapproved ) . await ?;
7171 notify_of_unapproval ( & repo_state, pr) . await
7272}
@@ -84,8 +84,11 @@ pub(super) async fn command_set_priority(
8484 deny_request ( & repo_state, pr, author, PermissionType :: Review ) . await ?;
8585 return Ok ( ( ) ) ;
8686 } ;
87- db. set_priority ( repo_state. repository ( ) , pr. number , & pr. base . name , priority)
88- . await
87+ let pr_model = db
88+ . get_or_create_pull_request ( repo_state. repository ( ) , pr. number , & pr. base . name )
89+ . await ?;
90+
91+ db. set_priority ( & pr_model, priority) . await
8992}
9093
9194/// Delegate approval authority of a pull request to its author.
@@ -101,10 +104,12 @@ pub(super) async fn command_delegate(
101104 return Ok ( ( ) ) ;
102105 }
103106
104- let delegatee = pr . author . username . clone ( ) ;
105- db . delegate ( repo_state. repository ( ) , pr. number , & pr. base . name )
107+ let pr_model = db
108+ . get_or_create_pull_request ( repo_state. repository ( ) , pr. number , & pr. base . name )
106109 . await ?;
107- notify_of_delegation ( & repo_state, pr, & delegatee) . await
110+
111+ db. delegate ( & pr_model) . await ?;
112+ notify_of_delegation ( & repo_state, pr, & pr. author . username ) . await
108113}
109114
110115/// Revoke any previously granted delegation.
@@ -119,8 +124,11 @@ pub(super) async fn command_undelegate(
119124 deny_request ( & repo_state, pr, author, PermissionType :: Review ) . await ?;
120125 return Ok ( ( ) ) ;
121126 }
122- db. undelegate ( repo_state. repository ( ) , pr. number , & pr. base . name )
123- . await
127+ let pr_model = db
128+ . get_or_create_pull_request ( repo_state. repository ( ) , pr. number , & pr. base . name )
129+ . await ?;
130+
131+ db. undelegate ( & pr_model) . await
124132}
125133
126134/// Set the rollup of a pull request.
@@ -136,8 +144,11 @@ pub(super) async fn command_set_rollup(
136144 deny_request ( & repo_state, pr, author, PermissionType :: Review ) . await ?;
137145 return Ok ( ( ) ) ;
138146 }
139- db. set_rollup ( repo_state. repository ( ) , pr. number , & pr. base . name , rollup)
140- . await
147+ let pr_model = db
148+ . get_or_create_pull_request ( repo_state. repository ( ) , pr. number , & pr. base . name )
149+ . await ?;
150+
151+ db. set_rollup ( & pr_model, rollup) . await
141152}
142153
143154pub ( super ) async fn command_close_tree (
0 commit comments