github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/introspection/rate_limiters_table_sql.go (about)

     1  package introspection
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/turbot/steampipe/pkg/constants"
     7  	"github.com/turbot/steampipe/pkg/db/db_common"
     8  	"github.com/turbot/steampipe/pkg/steampipeconfig/modconfig"
     9  )
    10  
    11  func GetRateLimiterTableCreateSql() db_common.QueryWithArgs {
    12  	return db_common.QueryWithArgs{
    13  		Query: fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s.%s (
    14  				name TEXT,
    15  				plugin TEXT,
    16  				plugin_instance TEXT NULL,
    17  				source_type TEXT,
    18  				status TEXT,
    19  				bucket_size INTEGER,
    20  				fill_rate REAL ,
    21  				max_concurrency INTEGER,
    22  				scope JSONB,
    23  				"where" TEXT,
    24  				file_name TEXT, 
    25  				start_line_number INTEGER, 
    26  				end_line_number INTEGER 
    27  		);`, constants.InternalSchema, constants.RateLimiterDefinitionTable),
    28  	}
    29  }
    30  
    31  func GetRateLimiterTableDropSql() db_common.QueryWithArgs {
    32  	return db_common.QueryWithArgs{
    33  		Query: fmt.Sprintf(
    34  			`DROP TABLE IF EXISTS %s.%s;`,
    35  			constants.InternalSchema,
    36  			constants.RateLimiterDefinitionTable,
    37  		),
    38  	}
    39  }
    40  
    41  func GetRateLimiterTablePopulateSql(settings *modconfig.RateLimiter) db_common.QueryWithArgs {
    42  	return db_common.QueryWithArgs{
    43  		Query: fmt.Sprintf(`INSERT INTO %s.%s (
    44  "name",
    45  plugin,
    46  plugin_instance,
    47  source_type,
    48  status,
    49  bucket_size,
    50  fill_rate,
    51  max_concurrency,
    52  scope,
    53  "where",
    54  file_name,
    55  start_line_number,
    56  end_line_number
    57  )
    58  	VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13)`, constants.InternalSchema, constants.RateLimiterDefinitionTable),
    59  		Args: []any{
    60  			settings.Name,
    61  			settings.Plugin,
    62  			settings.PluginInstance,
    63  			settings.Source,
    64  			settings.Status,
    65  			settings.BucketSize,
    66  			settings.FillRate,
    67  			settings.MaxConcurrency,
    68  			settings.Scope,
    69  			settings.Where,
    70  			settings.FileName,
    71  			settings.StartLineNumber,
    72  			settings.EndLineNumber,
    73  		},
    74  	}
    75  }
    76  
    77  func GetRateLimiterTableGrantSql() db_common.QueryWithArgs {
    78  	return db_common.QueryWithArgs{
    79  		Query: fmt.Sprintf(
    80  			`GRANT SELECT ON TABLE %s.%s to %s;`,
    81  			constants.InternalSchema,
    82  			constants.RateLimiterDefinitionTable,
    83  			constants.DatabaseUsersRole,
    84  		),
    85  	}
    86  }