Ivan Galakhov пре 4 година
родитељ
комит
9e2b90be61
3 измењених фајлова са 21 додато и 9 уклоњено
  1. 2 1
      internal/models/cluster.go
  2. 18 7
      internal/repository/gorm/cluster.go
  3. 1 1
      server/api/integration_handler.go

+ 2 - 1
internal/models/cluster.go

@@ -62,7 +62,8 @@ type Cluster struct {
 	DOIntegrationID   uint
 
 	// A token cache that can be used by an auth mechanism, if desired
-	TokenCache integrations.ClusterTokenCache `json:"token_cache"`
+	TokenCache   *integrations.ClusterTokenCache `json:"token_cache" gorm:"-" sql:"-"`
+	TokenCacheID uint                            `gorm:"token_cache_id"`
 
 	// CertificateAuthorityData for the cluster, encrypted at rest
 	CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"`

+ 18 - 7
internal/repository/gorm/cluster.go

@@ -2,6 +2,7 @@ package gorm
 
 import (
 	"context"
+	"fmt"
 	"github.com/porter-dev/porter/internal/models"
 	"github.com/porter-dev/porter/internal/repository"
 	"gorm.io/gorm"
@@ -143,13 +144,19 @@ func (repo *ClusterRepository) CreateCluster(
 	}
 
 	// create a token cache by default
-	assoc = ctxDB.Model(cluster).Association("TokenCache")
+	if cluster.TokenCache == nil {
+		cluster.TokenCache = &ints.ClusterTokenCache{}
+	}
 
-	if assoc.Error != nil {
-		return nil, assoc.Error
+	cluster.TokenCache.ClusterID = cluster.ID
+
+	if err := ctxDB.Save(cluster.TokenCache).Error; err != nil {
+		return nil, err
 	}
 
-	if err := assoc.Append(&cluster.TokenCache); err != nil {
+	cluster.TokenCacheID = cluster.TokenCache.ID
+
+	if err := ctxDB.Save(cluster).Error; err != nil {
 		return nil, err
 	}
 
@@ -171,12 +178,14 @@ func (repo *ClusterRepository) ReadCluster(
 	cluster := &models.Cluster{}
 
 	// preload Clusters association
-	if err := ctxDB.Debug().Preload("TokenCache", func(db *gorm.DB) *gorm.DB {
-		return db.Limit(100).Order("cluster_token_caches.updated_at DESC")
-	}).Where("id = ?", id).First(&cluster).Error; err != nil {
+	if err := ctxDB.Debug().Where("id = ?", id).First(&cluster).Error; err != nil {
 		return nil, err
 	}
 
+	fmt.Println("AaaaAAJASJKSAJKJKSJKSAJKAJK")
+	fmt.Println(cluster.TokenCacheID)
+	fmt.Println(cluster.TokenCacheID)
+
 	err := repo.DecryptClusterData(cluster, repo.key)
 
 	if err != nil {
@@ -237,6 +246,8 @@ func (repo *ClusterRepository) UpdateClusterTokenCache(
 ) (*models.Cluster, error) {
 	ctxDB := repo.db.WithContext(context.Background())
 
+	fmt.Println("UPDATE CACHE UPDATE CACHE UPDATE CACHE")
+
 	if tok := tokenCache.Token; len(tok) > 0 {
 		cipherData, err := repository.Encrypt(tok, repo.key)
 

+ 1 - 1
server/api/integration_handler.go

@@ -280,7 +280,7 @@ func (app *App) HandleOverwriteAWSIntegration(w http.ResponseWriter, r *http.Req
 		// clear the token
 		cluster.TokenCache.Token = []byte("")
 
-		cluster, err = app.Repo.Cluster.UpdateClusterTokenCache(&cluster.TokenCache)
+		cluster, err = app.Repo.Cluster.UpdateClusterTokenCache(cluster.TokenCache)
 
 		if err != nil {
 			app.handleErrorDataWrite(err, w)