mirror of
https://github.com/harness/drone.git
synced 2025-05-08 03:32:44 +08:00
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:
parent
d2a2c2c361
commit
0135603c8d
@ -293,14 +293,16 @@ var _ store.InfraProviderResourceView = (*InfraProviderResourceView)(nil)
|
|||||||
|
|
||||||
// NewInfraProviderResourceView returns a new InfraProviderResourceView.
|
// NewInfraProviderResourceView returns a new InfraProviderResourceView.
|
||||||
// It's used by the infraprovider resource cache.
|
// 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{
|
return &InfraProviderResourceView{
|
||||||
db: db,
|
db: db,
|
||||||
|
spaceStore: spaceStore,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type InfraProviderResourceView struct {
|
type InfraProviderResourceView struct {
|
||||||
db *sqlx.DB
|
db *sqlx.DB
|
||||||
|
spaceStore store.SpaceStore
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i InfraProviderResourceView) Find(ctx context.Context, id int64) (*types.InfraProviderResource, error) {
|
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)
|
dst := new(infraProviderResource)
|
||||||
db := dbtx.GetAccessor(ctx, i.db)
|
db := dbtx.GetAccessor(ctx, i.db)
|
||||||
if err := db.GetContext(ctx, dst, sql, args...); err != nil {
|
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) {
|
func (i InfraProviderResourceView) FindMany(ctx context.Context, ids []int64) ([]*types.InfraProviderResource, error) {
|
||||||
|
@ -117,8 +117,9 @@ func ProvidePrincipalInfoView(db *sqlx.DB) store.PrincipalInfoView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ProvideInfraProviderResourceView provides a principal info store.
|
// ProvideInfraProviderResourceView provides a principal info store.
|
||||||
func ProvideInfraProviderResourceView(db *sqlx.DB) store.InfraProviderResourceView {
|
func ProvideInfraProviderResourceView(db *sqlx.DB, spaceStore store.SpaceStore,
|
||||||
return NewInfraProviderResourceView(db)
|
) store.InfraProviderResourceView {
|
||||||
|
return NewInfraProviderResourceView(db, spaceStore)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProvideSpacePathStore provides a space path store.
|
// ProvideSpacePathStore provides a space path store.
|
||||||
|
@ -288,7 +288,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
infraProviderResourceView := database.ProvideInfraProviderResourceView(db)
|
infraProviderResourceView := database.ProvideInfraProviderResourceView(db, spaceStore)
|
||||||
infraProviderResourceCache := cache.ProvideInfraProviderResourceCache(infraProviderResourceView)
|
infraProviderResourceCache := cache.ProvideInfraProviderResourceCache(infraProviderResourceView)
|
||||||
gitspaceConfigStore := database.ProvideGitspaceConfigStore(db, principalInfoCache, infraProviderResourceCache)
|
gitspaceConfigStore := database.ProvideGitspaceConfigStore(db, principalInfoCache, infraProviderResourceCache)
|
||||||
gitspaceInstanceStore := database.ProvideGitspaceInstanceStore(db)
|
gitspaceInstanceStore := database.ProvideGitspaceInstanceStore(db)
|
||||||
|
Loading…
Reference in New Issue
Block a user