// 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.Latin1,
        collationServer: mysql.models.ConfigurationVariables.CollationServer.GbkChineseCi,
        connectionMemoryChunkSize: 360504027,
        connectionMemoryLimit: 1809751928859729152,
        defaultAuthenticationPlugin:
          mysql.models.ConfigurationVariables.DefaultAuthenticationPlugin.CachingSha2Password,
        globalConnectionMemoryLimit: 5666887171946682368,
        globalConnectionMemoryTracking: true,
        transactionIsolation:
          mysql.models.ConfigurationVariables.TransactionIsolation.ReadCommitted,
        innodbFtServerStopwordTable: "EXAMPLE-innodbFtServerStopwordTable-Value",
        mandatoryRoles: "EXAMPLE-mandatoryRoles-Value",
        autocommit: true,
        foreignKeyChecks: false,
        groupReplicationConsistency:
          mysql.models.ConfigurationVariables.GroupReplicationConsistency.BeforeAndAfter,
        groupConcatMaxLen: 6061424763038233604,
        innodbFtEnableStopword: true,
        innodbLogWriterThreads: false,
        localInfile: false,
        mysqlFirewallMode: false,
        mysqlxEnableHelloNotice: true,
        sqlRequirePrimaryKey: false,
        sqlWarnings: false,
        binlogExpireLogsSeconds: 722,
        binlogRowMetadata: mysql.models.ConfigurationVariables.BinlogRowMetadata.Full,
        binlogRowValueOptions: "EXAMPLE-binlogRowValueOptions-Value",
        binlogTransactionCompression: true,
        innodbBufferPoolSize: 952985485964199936,
        innodbFtResultCacheLimit: 1690782160,
        maxBinlogCacheSize: 51513364471084,
        maxConnectErrors: 5029483842106526721,
        maxHeapTableSize: 9160803912198447104,
        maxConnections: 15592,
        maxPreparedStmtCount: 2113668,
        connectTimeout: 28841629,
        cteMaxRecursionDepth: 1711707935,
        generatedRandomPasswordLength: 61,
        informationSchemaStatsExpiry: 16880623,
        innodbBufferPoolDumpPct: 98,
        innodbBufferPoolInstances: 37,
        innodbDdlBufferSize: 3161674780,
        innodbDdlThreads: 54,
        innodbFtMaxTokenSize: 62,
        innodbFtMinTokenSize: 5,
        innodbFtNumWordOptimize: 448,
        innodbLockWaitTimeout: 99266600,
        innodbMaxPurgeLag: 3956955916,
        innodbMaxPurgeLagDelay: 510504,
        interactiveTimeout: 30315980,
        innodbStatsPersistentSamplePages: 5883937798738074625,
        innodbStatsTransientSamplePages: 6496695777161671681,
        innodbStrictMode: false,
        maxAllowedPacket: 94668454,
        maxExecutionTime: 7028718782630618112,
        mysqlxConnectTimeout: 960193538,
        mysqlxDocumentIdUniquePrefix: 34982,
        mysqlxIdleWorkerThreadTimeout: 2274,
        mysqlxInteractiveTimeout: 949240,
        mysqlxMaxAllowedPacket: 933539658,
        mysqlxMinWorkerThreads: 7,
        mysqlxReadTimeout: 411072,
        mysqlxWaitTimeout: 1702112,
        mysqlxWriteTimeout: 1999916,
        netReadTimeout: 6731270,
        netWriteTimeout: 11431532,
        parserMaxMemSize: 484873778350361856,
        queryAllocBlockSize: 2001679561,
        queryPreallocSize: 4748031504534738944,
        regexpTimeLimit: 966307672,
        sqlMode: "EXAMPLE-sqlMode-Value",
        tmpTableSize: 3369307445825612288,
        mysqlxDeflateDefaultCompressionLevel: 6,
        mysqlxDeflateMaxClientCompressionLevel: 5,
        mysqlxLz4MaxClientCompressionLevel: 14,
        mysqlxLz4DefaultCompressionLevel: 14,
        mysqlxZstdMaxClientCompressionLevel: 13,
        mysqlxZstdDefaultCompressionLevel: 16,
        mysqlZstdDefaultCompressionLevel: 15,
        sortBufferSize: 7458569574555768832,
        waitTimeout: 1032294,
        threadPoolDedicatedListeners: false,
        threadPoolMaxTransactionsLimit: 79220,
        timeZone: "EXAMPLE-timeZone-Value",
        blockEncryptionMode: "EXAMPLE-blockEncryptionMode-Value",
        binlogGroupCommitSyncDelay: 230343,
        binlogGroupCommitSyncNoDelayCount: 81786,
        replicaNetTimeout: 19205348,
        requireSecureTransport: true,
        innodbRedoLogCapacity: 933818265,
        threadPoolTransactionDelay: 5301,
        threadPoolQueryThreadsPerGroup: 4018,
        explainFormat: mysql.models.ConfigurationVariables.ExplainFormat.Json,
        explicitDefaultsForTimestamp: true,
        sqlGenerateInvisiblePrimaryKey: false,
        temptableMaxRam: 4133683936705811456,
        innodbChangeBuffering: mysql.models.ConfigurationVariables.InnodbChangeBuffering.Purges,
        innodbAdaptiveHashIndex: true,
        innodbUndoLogTruncate: false,
        tableDefinitionCache: 455357,
        tableOpenCache: 253424,
        relayLogSpaceLimit: 210298023914660864,
        optimizerSwitch: "EXAMPLE-optimizerSwitch-Value",
        replicaTypeConversions: "EXAMPLE-replicaTypeConversions-Value",
        replicaParallelWorkers: 108,
        skipNameResolve: true,
        maxUserConnections: 4020046013,
        joinBufferSize: 6778040141204400256,
        maxSeeksForKey: 1858689865558256641,
        rangeOptimizerMaxMemSize: 6059234639805874176,
        autoIncrementIncrement: 22504,
        autoIncrementOffset: 61912,
        innodbAutoincLockMode: 100,
        innodbRollbackOnTimeout: false,
        innodbOnlineAlterLogMaxSize: 4513709070730112512,
        innodbSortBufferSize: 30024917,
        innodbNumaInterleave: false,
        threadPoolSize: 356,
        longQueryTime: 9487300
      } 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_Gi1Fx: "EXAMPLE_VALUE_AtrWoehMtzBHuLkbcCc9"
      },
      definedTags: {
        EXAMPLE_KEY_oVhuS: {
          EXAMPLE_KEY_4NE1X: "EXAMPLE--Value"
        }
      }
    } as unknown) as mysql.models.CreateConfigurationDetails;

    const createConfigurationRequest: mysql.requests.CreateConfigurationRequest = {
      createConfigurationDetails: createConfigurationDetails,
      opcRequestId: "1QKUFHYQ7L6SVIQ39VRB<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);
  }
})();