@@ -14,27 +14,30 @@ import (
1414
1515type  PullRequestSyncer  struct  {
1616	db      * sql.DB 
17- 	store   * models.PullRequestStore 
1817	client  * github.Client 
1918}
2019
2120func  NewPullRequestSyncer (db  * sql.DB , c  * github.Client ) * PullRequestSyncer  {
2221	return  & PullRequestSyncer {
2322		db :     db ,
24- 		store :  models .NewPullRequestStore (db ),
2523		client : c ,
2624	}
2725}
2826
2927func  (s  * PullRequestSyncer ) Sync (owner , repo  string , logger  log.Logger ) error  {
28+ 	store  :=  models .NewPullRequestStore (s .db )
29+ 	return  store .Transaction (func (store  * models.PullRequestStore ) error  {
30+ 		return  s .doPRs (store , owner , repo , logger )
31+ 	})
32+ }
33+ 
34+ func  (s  * PullRequestSyncer ) doPRs (store  * models.PullRequestStore , owner , repo  string , logger  log.Logger ) error  {
3035	opts  :=  & github.PullRequestListOptions {}
3136	opts .ListOptions .PerPage  =  listOptionsPerPage 
3237	opts .State  =  "all" 
3338
3439	logger .Infof ("starting to retrieve PRs" )
3540
36- 	// TODO transaction for faster times 
37- 
3841	// Get the list of all PRs 
3942	for  {
4043		prs , r , err  :=  s .client .PullRequests .List (context .TODO (), owner , repo , opts )
@@ -45,7 +48,7 @@ func (s *PullRequestSyncer) Sync(owner, repo string, logger log.Logger) error {
4548		for  _ , pr  :=  range  prs  {
4649			logger  :=  logger .With (log.Fields {"pr" : pr .GetNumber ()})
4750
48- 			_ , err  :=  s . store .FindOne (models .NewPullRequestQuery ().
51+ 			_ , err  :=  store .FindOne (models .NewPullRequestQuery ().
4952				Where (kallax .And (
5053					kallax .Eq (models .Schema .Issue .RepositoryOwner , owner ),
5154					kallax .Eq (models .Schema .Issue .RepositoryName , repo ),
@@ -66,7 +69,7 @@ func (s *PullRequestSyncer) Sync(owner, repo string, logger log.Logger) error {
6669			record  :=  models .NewPullRequest ()
6770			record .PullRequest  =  * pr 
6871
69- 			err  =  s . store .Insert (record )
72+ 			err  =  store .Insert (record )
7073			if  err  !=  nil  {
7174				logger .Errorf (err , "failed to write the resource into the DB" )
7275				return  fmt .Errorf ("failed to write the resource into the DB: %v" , err )
0 commit comments