// 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.Chain,
        bigTables: false,
        characterSetServer: mysql.models.ConfigurationVariables.CharacterSetServer.Koi8U,
        collationServer: mysql.models.ConfigurationVariables.CollationServer.Armscii8Bin,
        connectionMemoryChunkSize: 161972776,
        connectionMemoryLimit: 5010119284049467392,
        defaultAuthenticationPlugin:
          mysql.models.ConfigurationVariables.DefaultAuthenticationPlugin.CachingSha2Password,
        globalConnectionMemoryLimit: 8415123663208298496,
        globalConnectionMemoryTracking: true,
        transactionIsolation: mysql.models.ConfigurationVariables.TransactionIsolation.ReadCommited,
        innodbFtServerStopwordTable: "EXAMPLE-innodbFtServerStopwordTable-Value",
        mandatoryRoles: "EXAMPLE-mandatoryRoles-Value",
        autocommit: true,
        foreignKeyChecks: false,
        groupReplicationConsistency:
          mysql.models.ConfigurationVariables.GroupReplicationConsistency.After,
        groupConcatMaxLen: 9176724858019129348,
        innodbFtEnableStopword: true,
        innodbLogWriterThreads: false,
        localInfile: false,
        mysqlFirewallMode: false,
        mysqlxEnableHelloNotice: true,
        sqlRequirePrimaryKey: true,
        sqlWarnings: false,
        binlogExpireLogsSeconds: 754,
        binlogRowMetadata: mysql.models.ConfigurationVariables.BinlogRowMetadata.Full,
        binlogRowValueOptions: "EXAMPLE-binlogRowValueOptions-Value",
        binlogTransactionCompression: false,
        innodbBufferPoolSize: 966247376194663040,
        innodbFtResultCacheLimit: 1899394366,
        maxBinlogCacheSize: 63520483059344,
        maxConnectErrors: 5199338224821374977,
        maxHeapTableSize: 4331117714896745984,
        maxConnections: 55168,
        maxPreparedStmtCount: 212312,
        connectTimeout: 4868303,
        cteMaxRecursionDepth: 1748103914,
        generatedRandomPasswordLength: 5,
        informationSchemaStatsExpiry: 7923069,
        innodbBufferPoolDumpPct: 69,
        innodbBufferPoolInstances: 53,
        innodbDdlBufferSize: 3634052814,
        innodbDdlThreads: 27,
        innodbFtMaxTokenSize: 66,
        innodbFtMinTokenSize: 7,
        innodbFtNumWordOptimize: 962,
        innodbLockWaitTimeout: 52387237,
        innodbMaxPurgeLag: 1311368286,
        innodbMaxPurgeLagDelay: 688510,
        interactiveTimeout: 18130667,
        innodbStatsPersistentSamplePages: 8554043915039152129,
        innodbStatsTransientSamplePages: 5662708563264241665,
        innodbStrictMode: false,
        maxAllowedPacket: 542167231,
        maxExecutionTime: 1370521424035328000,
        mysqlxConnectTimeout: 413910781,
        mysqlxDocumentIdUniquePrefix: 46332,
        mysqlxIdleWorkerThreadTimeout: 1917,
        mysqlxInteractiveTimeout: 458427,
        mysqlxMaxAllowedPacket: 1000527792,
        mysqlxMinWorkerThreads: 76,
        mysqlxReadTimeout: 1509587,
        mysqlxWaitTimeout: 941202,
        mysqlxWriteTimeout: 511363,
        netReadTimeout: 24208178,
        netWriteTimeout: 24409186,
        parserMaxMemSize: 6863031301597855360,
        queryAllocBlockSize: 1866430972,
        queryPreallocSize: 8308876262186179584,
        regexpTimeLimit: 793960156,
        sqlMode: "EXAMPLE-sqlMode-Value",
        tmpTableSize: 3438718071921851904,
        mysqlxDeflateDefaultCompressionLevel: 8,
        mysqlxDeflateMaxClientCompressionLevel: 7,
        mysqlxLz4MaxClientCompressionLevel: 11,
        mysqlxLz4DefaultCompressionLevel: 8,
        mysqlxZstdMaxClientCompressionLevel: 12,
        mysqlxZstdDefaultCompressionLevel: 15,
        mysqlZstdDefaultCompressionLevel: 10,
        sortBufferSize: 2886607089284784128,
        waitTimeout: 2127188,
        threadPoolDedicatedListeners: true,
        threadPoolMaxTransactionsLimit: 3542,
        timeZone: "EXAMPLE-timeZone-Value",
        blockEncryptionMode: "EXAMPLE-blockEncryptionMode-Value",
        binlogGroupCommitSyncDelay: 349939,
        binlogGroupCommitSyncNoDelayCount: 40141,
        replicaNetTimeout: 12136857,
        requireSecureTransport: false,
        innodbRedoLogCapacity: 110740980690,
        threadPoolTransactionDelay: 178703,
        threadPoolQueryThreadsPerGroup: 881,
        explainFormat: mysql.models.ConfigurationVariables.ExplainFormat.Json,
        explicitDefaultsForTimestamp: false,
        sqlGenerateInvisiblePrimaryKey: false,
        temptableMaxRam: 7308156375218361344,
        innodbChangeBuffering: mysql.models.ConfigurationVariables.InnodbChangeBuffering.Purges,
        innodbAdaptiveHashIndex: false,
        innodbUndoLogTruncate: true,
        tableDefinitionCache: 188711,
        tableOpenCache: 334873,
        relayLogSpaceLimit: 4820619340698704896,
        optimizerSwitch: "EXAMPLE-optimizerSwitch-Value",
        replicaTypeConversions: "EXAMPLE-replicaTypeConversions-Value",
        replicaParallelWorkers: 515,
        skipNameResolve: false,
        maxUserConnections: 2196600410,
        joinBufferSize: 9021189748521306240,
        maxSeeksForKey: 4030200064720629761,
        rangeOptimizerMaxMemSize: 9134441312562967552,
        autoIncrementIncrement: 62923,
        autoIncrementOffset: 20842,
        innodbAutoincLockMode: 914,
        innodbRollbackOnTimeout: false,
        innodbOnlineAlterLogMaxSize: 6561029671729853440,
        innodbSortBufferSize: 37563283,
        innodbNumaInterleave: false,
        threadPoolSize: 230,
        longQueryTime: 2082440
      } 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_YpCck: "EXAMPLE_VALUE_GT6u4ueE3ACnDwDyOdog"
      },
      definedTags: {
        EXAMPLE_KEY_dfA7u: {
          EXAMPLE_KEY_M30eE: "EXAMPLE--Value"
        }
      }
    } as unknown) as mysql.models.CreateConfigurationDetails;

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