feat: [CDE-603]: set infraproviderconfig identifier and space in the cache (#3399)

* feat: [CDE-603]: set infraproviderconfig in the cache
* feat: [CDE-603]: set infraproviderconfig in the cache
* feat: [CDE-603]: set infraproviderconfig in the cache
This commit is contained in:
Ansuman Satapathy 2025-02-10 11:54:15 +00:00 committed by Harness
parent d2a2c2c361
commit 0135603c8d
3 changed files with 43 additions and 8 deletions

View File

@ -293,14 +293,16 @@ var _ store.InfraProviderResourceView = (*InfraProviderResourceView)(nil)
// NewInfraProviderResourceView returns a new InfraProviderResourceView.
// It's used by the infraprovider resource cache.
func NewInfraProviderResourceView(db *sqlx.DB) *InfraProviderResourceView {
func NewInfraProviderResourceView(db *sqlx.DB, spaceStore store.SpaceStore) *InfraProviderResourceView {
return &InfraProviderResourceView{
db: db,
spaceStore: spaceStore,
}
}
type InfraProviderResourceView struct {
db *sqlx.DB
spaceStore store.SpaceStore
}
func (i InfraProviderResourceView) Find(ctx context.Context, id int64) (*types.InfraProviderResource, error) {
@ -316,9 +318,41 @@ func (i InfraProviderResourceView) Find(ctx context.Context, id int64) (*types.I
dst := new(infraProviderResource)
db := dbtx.GetAccessor(ctx, i.db)
if err := db.GetContext(ctx, dst, sql, args...); err != nil {
return nil, database.ProcessSQLErrorf(ctx, err, "Failed to find infraprovider resource %d", id)
return nil, database.ProcessSQLErrorf(ctx, err, "Failed to find infraprovider providerResource %d", id)
}
return mapToInfraProviderResource(ctx, dst)
providerResource, err := mapToInfraProviderResource(ctx, dst)
if err != nil {
return nil, err
}
providerConfig, err := i.findInfraProviderConfig(ctx, providerResource.InfraProviderConfigID)
if err == nil && providerConfig != nil {
providerResource.InfraProviderConfigIdentifier = providerConfig.Identifier
}
resourceSpace, err := i.spaceStore.Find(ctx, providerResource.SpaceID)
if err == nil {
providerResource.SpacePath = resourceSpace.Path
}
return providerResource, err
}
func (i InfraProviderResourceView) findInfraProviderConfig(
ctx context.Context,
id int64,
) (*infraProviderConfig, error) {
stmt := database.Builder.
Select(infraProviderConfigSelectColumns).
From(infraProviderConfigTable).
Where(infraProviderConfigIDColumn+" = $1", id) //nolint:goconst
sql, args, err := stmt.ToSql()
if err != nil {
return nil, errors.Wrap(err, "Failed to convert squirrel builder to sql")
}
dst := new(infraProviderConfig)
db := dbtx.GetAccessor(ctx, i.db)
if err := db.GetContext(ctx, dst, sql, args...); err != nil {
return nil, database.ProcessSQLErrorf(ctx, err, "Failed to find infraprovider config %d", id)
}
return dst, nil
}
func (i InfraProviderResourceView) FindMany(ctx context.Context, ids []int64) ([]*types.InfraProviderResource, error) {

View File

@ -117,8 +117,9 @@ func ProvidePrincipalInfoView(db *sqlx.DB) store.PrincipalInfoView {
}
// ProvideInfraProviderResourceView provides a principal info store.
func ProvideInfraProviderResourceView(db *sqlx.DB) store.InfraProviderResourceView {
return NewInfraProviderResourceView(db)
func ProvideInfraProviderResourceView(db *sqlx.DB, spaceStore store.SpaceStore,
) store.InfraProviderResourceView {
return NewInfraProviderResourceView(db, spaceStore)
}
// ProvideSpacePathStore provides a space path store.

View File

@ -288,7 +288,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
if err != nil {
return nil, err
}
infraProviderResourceView := database.ProvideInfraProviderResourceView(db)
infraProviderResourceView := database.ProvideInfraProviderResourceView(db, spaceStore)
infraProviderResourceCache := cache.ProvideInfraProviderResourceCache(infraProviderResourceView)
gitspaceConfigStore := database.ProvideGitspaceConfigStore(db, principalInfoCache, infraProviderResourceCache)
gitspaceInstanceStore := database.ProvideGitspaceInstanceStore(db)