// This is an automatically generated code sample.
// To make this code sample work in your Oracle Cloud tenancy,
// please replace the values for any parameters whose current values do not fit
// your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
// boolean, number, and enum parameters with values not fitting your use case).

import * as mysql from "oci-mysql";
import common = require("oci-common");

// Create a default authentication provider that uses the DEFAULT
// profile in the configuration file.
// Refer to <see href="https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File>the public documentation</see> on how to prepare a configuration file.

const provider: common.ConfigFileAuthenticationDetailsProvider = new common.ConfigFileAuthenticationDetailsProvider();

(async () => {
  try {
    // Create a service client
    const client = new mysql.MysqlaasClient({ authenticationDetailsProvider: provider });

    // Create a request and dependent object(s).
    const createConfigurationDetails = ({
      compartmentId: "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value",
      description: "EXAMPLE-description-Value",
      displayName: "EXAMPLE-displayName-Value",
      shapeName: "EXAMPLE-shapeName-Value",
      initVariables: ({
        lowerCaseTableNames: mysql.models.InitializationVariables.LowerCaseTableNames.CaseSensitive
      } as unknown) as mysql.models.InitializationVariables,
      variables: ({
        completionType: mysql.models.ConfigurationVariables.CompletionType.Release,
        bigTables: false,
        characterSetServer: mysql.models.ConfigurationVariables.CharacterSetServer.Gb2312,
        collationServer: mysql.models.ConfigurationVariables.CollationServer.Latin1GeneralCs,
        connectionMemoryChunkSize: 11638538,
        connectionMemoryLimit: 8660751059061856256,
        defaultAuthenticationPlugin:
          mysql.models.ConfigurationVariables.DefaultAuthenticationPlugin.MysqlNativePassword,
        globalConnectionMemoryLimit: 6483560419407020032,
        globalConnectionMemoryTracking: true,
        transactionIsolation: mysql.models.ConfigurationVariables.TransactionIsolation.Serializable,
        innodbFtServerStopwordTable: "EXAMPLE-innodbFtServerStopwordTable-Value",
        mandatoryRoles: "EXAMPLE-mandatoryRoles-Value",
        autocommit: true,
        foreignKeyChecks: false,
        groupReplicationConsistency:
          mysql.models.ConfigurationVariables.GroupReplicationConsistency.Before,
        groupConcatMaxLen: 5264125006825850884,
        innodbFtEnableStopword: true,
        innodbLogWriterThreads: false,
        localInfile: false,
        mysqlFirewallMode: true,
        mysqlxEnableHelloNotice: false,
        sqlRequirePrimaryKey: false,
        sqlWarnings: true,
        binlogExpireLogsSeconds: 49,
        binlogRowMetadata: mysql.models.ConfigurationVariables.BinlogRowMetadata.Minimal,
        binlogRowValueOptions: "EXAMPLE-binlogRowValueOptions-Value",
        binlogTransactionCompression: true,
        innodbBufferPoolSize: 627946576323672448,
        innodbFtResultCacheLimit: 2506957321,
        maxBinlogCacheSize: 64270938545651,
        maxConnectErrors: 5093218227655339009,
        maxHeapTableSize: 2803038705353708544,
        maxConnections: 56675,
        maxPreparedStmtCount: 572366,
        connectTimeout: 14583996,
        cteMaxRecursionDepth: 172531326,
        generatedRandomPasswordLength: 76,
        informationSchemaStatsExpiry: 12754667,
        innodbBufferPoolDumpPct: 41,
        innodbBufferPoolInstances: 25,
        innodbDdlBufferSize: 3133525095,
        innodbDdlThreads: 60,
        innodbFtMaxTokenSize: 29,
        innodbFtMinTokenSize: 5,
        innodbFtNumWordOptimize: 748,
        innodbLockWaitTimeout: 636240664,
        innodbMaxPurgeLag: 1006389651,
        innodbMaxPurgeLagDelay: 984919,
        interactiveTimeout: 26778314,
        innodbStatsPersistentSamplePages: 576385151262253057,
        innodbStatsTransientSamplePages: 5674877524434458625,
        innodbStrictMode: false,
        maxAllowedPacket: 626763168,
        maxExecutionTime: 1631877569526889472,
        mysqlxConnectTimeout: 723804546,
        mysqlxDocumentIdUniquePrefix: 53470,
        mysqlxIdleWorkerThreadTimeout: 145,
        mysqlxInteractiveTimeout: 306020,
        mysqlxMaxAllowedPacket: 160784821,
        mysqlxMinWorkerThreads: 6,
        mysqlxReadTimeout: 1573256,
        mysqlxWaitTimeout: 1605641,
        mysqlxWriteTimeout: 369851,
        netReadTimeout: 23607693,
        netWriteTimeout: 1403232,
        parserMaxMemSize: 149375717393504736,
        queryAllocBlockSize: 2708893857,
        queryPreallocSize: 4327368429520589824,
        regexpTimeLimit: 941889314,
        sqlMode: "EXAMPLE-sqlMode-Value",
        tmpTableSize: 6729157378557736960,
        mysqlxDeflateDefaultCompressionLevel: 2,
        mysqlxDeflateMaxClientCompressionLevel: 7,
        mysqlxLz4MaxClientCompressionLevel: 13,
        mysqlxLz4DefaultCompressionLevel: 6,
        mysqlxZstdMaxClientCompressionLevel: 8,
        mysqlxZstdDefaultCompressionLevel: 5,
        mysqlZstdDefaultCompressionLevel: 17,
        sortBufferSize: 2775402535666715136,
        waitTimeout: 1851076,
        threadPoolDedicatedListeners: true,
        threadPoolMaxTransactionsLimit: 36474,
        timeZone: "EXAMPLE-timeZone-Value",
        blockEncryptionMode: "EXAMPLE-blockEncryptionMode-Value",
        binlogGroupCommitSyncDelay: 493023,
        binlogGroupCommitSyncNoDelayCount: 96357,
        replicaNetTimeout: 9761052,
        requireSecureTransport: false,
        innodbRedoLogCapacity: 86431445980,
        threadPoolTransactionDelay: 160842,
        threadPoolQueryThreadsPerGroup: 3552,
        explainFormat: mysql.models.ConfigurationVariables.ExplainFormat.Json,
        explicitDefaultsForTimestamp: true,
        sqlGenerateInvisiblePrimaryKey: true,
        temptableMaxRam: 1347635399357197056,
        innodbChangeBuffering: mysql.models.ConfigurationVariables.InnodbChangeBuffering.Inserts,
        innodbAdaptiveHashIndex: true,
        innodbUndoLogTruncate: false,
        tableDefinitionCache: 23381,
        tableOpenCache: 387177,
        relayLogSpaceLimit: 6992085875520746496,
        optimizerSwitch: "EXAMPLE-optimizerSwitch-Value",
        replicaTypeConversions: "EXAMPLE-replicaTypeConversions-Value",
        replicaParallelWorkers: 682,
        skipNameResolve: true,
        maxUserConnections: 2243951423,
        joinBufferSize: 8305879202131468416,
        maxSeeksForKey: 7496237140251621377,
        rangeOptimizerMaxMemSize: 8579573238451576832,
        autoIncrementIncrement: 64364,
        autoIncrementOffset: 24351,
        innodbAutoincLockMode: 3,
        innodbRollbackOnTimeout: true,
        innodbOnlineAlterLogMaxSize: 5751366243455973376,
        innodbSortBufferSize: 50349969,
        innodbNumaInterleave: false,
        threadPoolSize: 499,
        longQueryTime: 11574407
      } as unknown) as mysql.models.ConfigurationVariables,
      options: [
        ({
          name: "EXAMPLE-name-Value",
          value: "EXAMPLE-value-Value"
        } as unknown) as mysql.models.Option
      ],
      parentConfigurationId: "ocid1.test.oc1..<unique_ID>EXAMPLE-parentConfigurationId-Value",
      freeformTags: {
        EXAMPLE_KEY_evwiO: "EXAMPLE_VALUE_oSLw7oxmksTpWz36HTgI"
      },
      definedTags: {
        EXAMPLE_KEY_lLMKl: {
          EXAMPLE_KEY_9JG5o: "EXAMPLE--Value"
        }
      }
    } as unknown) as mysql.models.CreateConfigurationDetails;

    const createConfigurationRequest: mysql.requests.CreateConfigurationRequest = {
      createConfigurationDetails: createConfigurationDetails,
      opcRequestId: "NDJQHPMG22ZG9Q5VGNCI<unique_ID>",
      opcRetryToken: "EXAMPLE-opcRetryToken-Value"
    };

    // Send request to the Client.
    const createConfigurationResponse = await client.createConfiguration(
      createConfigurationRequest
    );
  } catch (error) {
    console.log("createConfiguration Failed with error  " + error);
  }
})();