// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace TencentCloudIAC.PulumiPackage.Tencentcloud.Mariadb
{
    /// <summary>
    /// Provides a resource to create a mariadb parameters
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using Pulumi;
    /// using Tencentcloud = TencentCloudIAC.PulumiPackage.Tencentcloud;
    /// 
    /// class MyStack : Stack
    /// {
    ///     public MyStack()
    ///     {
    ///         var parameters = new Tencentcloud.Mariadb.Parameters("parameters", new Tencentcloud.Mariadb.ParametersArgs
    ///         {
    ///             InstanceId = "tdsql-4pzs5b67",
    ///             Params = 
    ///             {
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "auto_increment_increment",
    ///                     Value = "1",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "auto_increment_offset",
    ///                     Value = "1",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "autocommit",
    ///                     Value = "ON",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "character_set_server",
    ///                     Value = "utf8mb4",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "collation_connection",
    ///                     Value = "utf8mb4_general_ci",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "collation_database",
    ///                     Value = "utf8mb4_general_ci",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "collation_server",
    ///                     Value = "utf8mb4_general_ci",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "connect_timeout",
    ///                     Value = "10",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "default_collation_for_utf8mb4",
    ///                     Value = "utf8mb4_general_ci",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "default_week_format",
    ///                     Value = "0",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "delay_key_write",
    ///                     Value = "ON",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "delayed_insert_limit",
    ///                     Value = "100",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "delayed_insert_timeout",
    ///                     Value = "300",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "delayed_queue_size",
    ///                     Value = "1000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "div_precision_increment",
    ///                     Value = "4",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "event_scheduler",
    ///                     Value = "ON",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "group_concat_max_len",
    ///                     Value = "1024",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_concurrency_tickets",
    ///                     Value = "5000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_flush_log_at_trx_commit",
    ///                     Value = "1",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_lock_wait_timeout",
    ///                     Value = "20",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_max_dirty_pages_pct",
    ///                     Value = "70.000000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_old_blocks_pct",
    ///                     Value = "37",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_old_blocks_time",
    ///                     Value = "1000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_purge_batch_size",
    ///                     Value = "1000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_read_ahead_threshold",
    ///                     Value = "56",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_stats_method",
    ///                     Value = "nulls_equal",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_stats_on_metadata",
    ///                     Value = "OFF",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_strict_mode",
    ///                     Value = "OFF",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_table_locks",
    ///                     Value = "ON",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "innodb_thread_concurrency",
    ///                     Value = "0",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "interactive_timeout",
    ///                     Value = "28800",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "key_cache_age_threshold",
    ///                     Value = "300",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "key_cache_block_size",
    ///                     Value = "1024",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "key_cache_division_limit",
    ///                     Value = "100",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "local_infile",
    ///                     Value = "OFF",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "lock_wait_timeout",
    ///                     Value = "5",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "log_queries_not_using_indexes",
    ///                     Value = "OFF",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "long_query_time",
    ///                     Value = "1.000000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "low_priority_updates",
    ///                     Value = "OFF",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "max_allowed_packet",
    ///                     Value = "1073741824",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "max_binlog_size",
    ///                     Value = "536870912",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "max_connect_errors",
    ///                     Value = "2000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "max_connections",
    ///                     Value = "10000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "max_execution_time",
    ///                     Value = "0",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "max_prepared_stmt_count",
    ///                     Value = "200000",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "myisam_sort_buffer_size",
    ///                     Value = "4194304",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "net_buffer_length",
    ///                     Value = "16384",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "net_read_timeout",
    ///                     Value = "150",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "net_retry_count",
    ///                     Value = "10",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "net_write_timeout",
    ///                     Value = "300",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "query_alloc_block_size",
    ///                     Value = "16384",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "query_prealloc_size",
    ///                     Value = "24576",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "slow_launch_time",
    ///                     Value = "2",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "sort_buffer_size",
    ///                     Value = "2097152",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "sql_mode",
    ///                     Value = "NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "sql_require_primary_key",
    ///                     Value = "ON",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "sql_safe_updates",
    ///                     Value = "OFF",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "sqlasyntimeout",
    ///                     Value = "30",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "sync_binlog",
    ///                     Value = "1",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "table_definition_cache",
    ///                     Value = "10240",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "table_open_cache",
    ///                     Value = "20480",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "time_zone",
    ///                     Value = "+08:00",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "tmp_table_size",
    ///                     Value = "33554432",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "tx_isolation",
    ///                     Value = "READ-COMMITTED",
    ///                 },
    ///                 new Tencentcloud.Mariadb.Inputs.ParametersParamArgs
    ///                 {
    ///                     Param = "wait_timeout",
    ///                     Value = "28800",
    ///                 },
    ///             },
    ///         });
    ///     }
    /// 
    /// }
    /// ```
    /// 
    /// ## Import
    /// 
    /// mariadb parameters can be imported using the id, e.g.
    /// 
    /// ```sh
    ///  $ pulumi import tencentcloud:Mariadb/parameters:Parameters parameters tdsql-4pzs5b67
    /// ```
    /// </summary>
    [TencentcloudResourceType("tencentcloud:Mariadb/parameters:Parameters")]
    public partial class Parameters : Pulumi.CustomResource
    {
        /// <summary>
        /// instance id.
        /// </summary>
        [Output("instanceId")]
        public Output<string> InstanceId { get; private set; } = null!;

        /// <summary>
        /// Number of days to keep, no more than 30.
        /// </summary>
        [Output("params")]
        public Output<ImmutableArray<Outputs.ParametersParam>> Params { get; private set; } = null!;


        /// <summary>
        /// Create a Parameters resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public Parameters(string name, ParametersArgs args, CustomResourceOptions? options = null)
            : base("tencentcloud:Mariadb/parameters:Parameters", name, args ?? new ParametersArgs(), MakeResourceOptions(options, ""))
        {
        }

        private Parameters(string name, Input<string> id, ParametersState? state = null, CustomResourceOptions? options = null)
            : base("tencentcloud:Mariadb/parameters:Parameters", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/tencentcloudstack",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing Parameters resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static Parameters Get(string name, Input<string> id, ParametersState? state = null, CustomResourceOptions? options = null)
        {
            return new Parameters(name, id, state, options);
        }
    }

    public sealed class ParametersArgs : Pulumi.ResourceArgs
    {
        /// <summary>
        /// instance id.
        /// </summary>
        [Input("instanceId", required: true)]
        public Input<string> InstanceId { get; set; } = null!;

        [Input("params", required: true)]
        private InputList<Inputs.ParametersParamArgs>? _params;

        /// <summary>
        /// Number of days to keep, no more than 30.
        /// </summary>
        public InputList<Inputs.ParametersParamArgs> Params
        {
            get => _params ?? (_params = new InputList<Inputs.ParametersParamArgs>());
            set => _params = value;
        }

        public ParametersArgs()
        {
        }
    }

    public sealed class ParametersState : Pulumi.ResourceArgs
    {
        /// <summary>
        /// instance id.
        /// </summary>
        [Input("instanceId")]
        public Input<string>? InstanceId { get; set; }

        [Input("params")]
        private InputList<Inputs.ParametersParamGetArgs>? _params;

        /// <summary>
        /// Number of days to keep, no more than 30.
        /// </summary>
        public InputList<Inputs.ParametersParamGetArgs> Params
        {
            get => _params ?? (_params = new InputList<Inputs.ParametersParamGetArgs>());
            set => _params = value;
        }

        public ParametersState()
        {
        }
    }
}
