mirror of
https://github.com/turbot/steampipe.git
synced 2025-12-20 02:20:57 -05:00
57 lines
1.6 KiB
Go
57 lines
1.6 KiB
Go
package db_common
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
"github.com/turbot/steampipe/v2/pkg/constants"
|
|
)
|
|
|
|
// SetCacheTtl set the cache ttl on the client
|
|
func SetCacheTtl(ctx context.Context, duration time.Duration, connection *pgx.Conn) error {
|
|
duration = duration.Truncate(time.Second)
|
|
seconds := fmt.Sprint(duration.Seconds())
|
|
return executeCacheTtlSetFunction(ctx, seconds, connection)
|
|
}
|
|
|
|
// CacheClear resets the max time on the cache
|
|
// anything below this is not accepted
|
|
func CacheClear(ctx context.Context, connection *pgx.Conn) error {
|
|
return executeCacheSetFunction(ctx, "clear", connection)
|
|
}
|
|
|
|
// SetCacheEnabled enables/disables the cache
|
|
func SetCacheEnabled(ctx context.Context, enabled bool, connection *pgx.Conn) error {
|
|
value := "off"
|
|
if enabled {
|
|
value = "on"
|
|
}
|
|
return executeCacheSetFunction(ctx, value, connection)
|
|
}
|
|
|
|
func executeCacheSetFunction(ctx context.Context, settingValue string, connection *pgx.Conn) error {
|
|
return ExecuteSystemClientCall(ctx, connection, func(ctx context.Context, tx pgx.Tx) error {
|
|
_, err := tx.Exec(ctx, fmt.Sprintf(
|
|
"select %s.%s('%s')",
|
|
constants.InternalSchema,
|
|
constants.FunctionCacheSet,
|
|
settingValue,
|
|
))
|
|
return err
|
|
})
|
|
}
|
|
|
|
func executeCacheTtlSetFunction(ctx context.Context, seconds string, connection *pgx.Conn) error {
|
|
return ExecuteSystemClientCall(ctx, connection, func(ctx context.Context, tx pgx.Tx) error {
|
|
_, err := tx.Exec(ctx, fmt.Sprintf(
|
|
"select %s.%s('%s')",
|
|
constants.InternalSchema,
|
|
constants.FunctionCacheSetTtl,
|
|
seconds,
|
|
))
|
|
return err
|
|
})
|
|
}
|