Skip to content

Commit 73f366d

Browse files
committed
feat(providers): auto-sync provider on create (closes #478)
1 parent 1358a8a commit 73f366d

File tree

4 files changed

+33
-25
lines changed

4 files changed

+33
-25
lines changed

server/api/provider/create.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func HandleCreate(providers core.ProviderStore) http.HandlerFunc {
3737
return
3838
}
3939

40-
provider := core.Provider{
40+
provider := &core.Provider{
4141
Name: f.Name,
4242
URL: f.URL,
4343
Host: f.Host,
@@ -51,6 +51,11 @@ func HandleCreate(providers core.ProviderStore) http.HandlerFunc {
5151
return
5252
}
5353

54+
if err := providers.Sync(provider.ID); err != nil {
55+
render.InternalServerError(w, err.Error())
56+
return
57+
}
58+
5459
render.JSON(w, http.StatusOK, provider)
5560
}
5661
}

server/api/provider/update.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func HandleUpdate(providers core.ProviderStore, users core.UserStore) http.Handl
1818
Name string `json:"name" valid:"stringlength(4|12),required"`
1919
URL string `json:"url" valid:"url,required"`
2020
Host string `json:"host" valid:"url,required"`
21-
AccessToken string `json:"accessToken" valid:"stringlength(12|50),required"`
21+
AccessToken string `json:"accessToken"`
2222
Secret string `json:"secret" valid:"stringlength(5|50),required"`
2323
}
2424

@@ -51,14 +51,17 @@ func HandleUpdate(providers core.ProviderStore, users core.UserStore) http.Handl
5151
}
5252

5353
if p.UserID == claims.ID || user.Role == "admin" {
54-
provider := core.Provider{
55-
ID: f.ID,
56-
Name: f.Name,
57-
URL: f.URL,
58-
Host: f.Host,
59-
AccessToken: f.AccessToken,
60-
Secret: f.Secret,
61-
UserID: claims.ID,
54+
provider := &core.Provider{
55+
ID: f.ID,
56+
Name: f.Name,
57+
URL: f.URL,
58+
Host: f.Host,
59+
Secret: f.Secret,
60+
UserID: claims.ID,
61+
}
62+
63+
if f.AccessToken != "" {
64+
provider.AccessToken = f.AccessToken
6265
}
6366

6467
if err := providers.Update(provider); err != nil {

server/core/provider.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,23 @@ type (
2424
// ProviderStore defines operations on `providers` table.
2525
ProviderStore interface {
2626
// Find returns provider from datastore.
27-
Find(uint) (Provider, error)
27+
Find(uint) (*Provider, error)
2828

2929
// List returns providers from datastore.
3030
List() ([]*Provider, error)
3131

3232
// ListUser returns providers from datastore based
3333
// by user ID.
34-
ListUser(uint) ([]Provider, error)
34+
ListUser(uint) ([]*Provider, error)
3535

3636
// Create persists a new provider to the datastore.
37-
Create(Provider) error
37+
Create(*Provider) error
3838

3939
// Update persists updated provider to the datastore.
40-
Update(Provider) error
40+
Update(*Provider) error
4141

4242
// Delete deletes a provider from the datastore.
43-
Delete(Provider) error
43+
Delete(*Provider) error
4444

4545
// Sync synchronizes provider repositories with local repositories.
4646
Sync(uint) error

server/store/provider/provider.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ type providerStore struct {
2121
repos core.RepositoryStore
2222
}
2323

24-
func (s providerStore) Find(id uint) (core.Provider, error) {
25-
var provider core.Provider
26-
err := s.db.Model(&provider).Where("id = ?", id).First(&provider).Error
24+
func (s providerStore) Find(id uint) (*core.Provider, error) {
25+
provider := &core.Provider{}
26+
err := s.db.Model(&core.Provider{}).Where("id = ?", id).First(&provider).Error
2727
return provider, err
2828
}
2929

@@ -33,21 +33,21 @@ func (s providerStore) List() ([]*core.Provider, error) {
3333
return providers, err
3434
}
3535

36-
func (s providerStore) ListUser(userID uint) ([]core.Provider, error) {
37-
var providers []core.Provider
36+
func (s providerStore) ListUser(userID uint) ([]*core.Provider, error) {
37+
var providers []*core.Provider
3838
err := s.db.Where("user_id = ?", userID).Find(&providers).Error
3939
return providers, err
4040
}
4141

42-
func (s providerStore) Create(provider core.Provider) error {
43-
return s.db.Create(&provider).Error
42+
func (s providerStore) Create(provider *core.Provider) error {
43+
return s.db.Create(provider).Error
4444
}
4545

46-
func (s providerStore) Update(provider core.Provider) error {
47-
return s.db.Model(&provider).Updates(&provider).Error
46+
func (s providerStore) Update(provider *core.Provider) error {
47+
return s.db.Model(provider).Updates(&provider).Error
4848
}
4949

50-
func (s providerStore) Delete(provider core.Provider) error {
50+
func (s providerStore) Delete(provider *core.Provider) error {
5151
return s.db.Delete(&provider).Error
5252
}
5353

0 commit comments

Comments
 (0)