// 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.NoChain,
        bigTables: true,
        characterSetServer: mysql.models.ConfigurationVariables.CharacterSetServer.Cp1256,
        collationServer: mysql.models.ConfigurationVariables.CollationServer.Ucs2TurkishCi,
        connectionMemoryChunkSize: 138395587,
        connectionMemoryLimit: 5758192892733893632,
        defaultAuthenticationPlugin:
          mysql.models.ConfigurationVariables.DefaultAuthenticationPlugin.MysqlNativePassword,
        globalConnectionMemoryLimit: 7850731894274118656,
        globalConnectionMemoryTracking: false,
        transactionIsolation: mysql.models.ConfigurationVariables.TransactionIsolation.Serializable,
        innodbFtServerStopwordTable: "EXAMPLE-innodbFtServerStopwordTable-Value",
        mandatoryRoles: "EXAMPLE-mandatoryRoles-Value",
        autocommit: false,
        foreignKeyChecks: true,
        groupReplicationConsistency:
          mysql.models.ConfigurationVariables.GroupReplicationConsistency.Before,
        groupConcatMaxLen: 3406921167731350532,
        innodbFtEnableStopword: true,
        innodbLogWriterThreads: false,
        localInfile: false,
        mysqlFirewallMode: true,
        mysqlxEnableHelloNotice: true,
        sqlRequirePrimaryKey: false,
        sqlWarnings: false,
        binlogExpireLogsSeconds: 830,
        binlogRowMetadata: mysql.models.ConfigurationVariables.BinlogRowMetadata.Minimal,
        binlogRowValueOptions: "EXAMPLE-binlogRowValueOptions-Value",
        binlogTransactionCompression: true,
        innodbBufferPoolSize: 918554536262057088,
        innodbFtResultCacheLimit: 4153555590,
        maxBinlogCacheSize: 34500537192192,
        maxConnectErrors: 4222517600040548353,
        maxHeapTableSize: 8703002472910262272,
        maxConnections: 84529,
        maxPreparedStmtCount: 1180154,
        connectTimeout: 443310,
        cteMaxRecursionDepth: 2155250035,
        generatedRandomPasswordLength: 41,
        informationSchemaStatsExpiry: 21186763,
        innodbBufferPoolDumpPct: 25,
        innodbBufferPoolInstances: 26,
        innodbDdlBufferSize: 1942114613,
        innodbDdlThreads: 15,
        innodbFtMaxTokenSize: 24,
        innodbFtMinTokenSize: 11,
        innodbFtNumWordOptimize: 197,
        innodbLockWaitTimeout: 743158053,
        innodbMaxPurgeLag: 1457020339,
        innodbMaxPurgeLagDelay: 804610,
        interactiveTimeout: 10286263,
        innodbStatsPersistentSamplePages: 2238790093473928193,
        innodbStatsTransientSamplePages: 7962321085737998337,
        innodbStrictMode: false,
        maxAllowedPacket: 403570174,
        maxExecutionTime: 5158025527178536960,
        mysqlxConnectTimeout: 305601029,
        mysqlxDocumentIdUniquePrefix: 40939,
        mysqlxIdleWorkerThreadTimeout: 921,
        mysqlxInteractiveTimeout: 1639897,
        mysqlxMaxAllowedPacket: 668782496,
        mysqlxMinWorkerThreads: 75,
        mysqlxReadTimeout: 737013,
        mysqlxWaitTimeout: 948892,
        mysqlxWriteTimeout: 2000360,
        netReadTimeout: 10581161,
        netWriteTimeout: 16326398,
        parserMaxMemSize: 8681073057329224320,
        queryAllocBlockSize: 3316679795,
        queryPreallocSize: 2647942214622839296,
        regexpTimeLimit: 327363719,
        sqlMode: "EXAMPLE-sqlMode-Value",
        tmpTableSize: 5745584616156284928,
        mysqlxDeflateDefaultCompressionLevel: 7,
        mysqlxDeflateMaxClientCompressionLevel: 3,
        mysqlxLz4MaxClientCompressionLevel: 15,
        mysqlxLz4DefaultCompressionLevel: 6,
        mysqlxZstdMaxClientCompressionLevel: 16,
        mysqlxZstdDefaultCompressionLevel: 13,
        mysqlZstdDefaultCompressionLevel: 13,
        sortBufferSize: 1684682223716498688,
        waitTimeout: 1605067,
        threadPoolDedicatedListeners: true,
        threadPoolMaxTransactionsLimit: 72865,
        timeZone: "EXAMPLE-timeZone-Value",
        blockEncryptionMode: "EXAMPLE-blockEncryptionMode-Value",
        binlogGroupCommitSyncDelay: 868798,
        binlogGroupCommitSyncNoDelayCount: 4625,
        replicaNetTimeout: 27707591,
        requireSecureTransport: true,
        innodbRedoLogCapacity: 77774296797,
        threadPoolTransactionDelay: 195514,
        threadPoolQueryThreadsPerGroup: 2395,
        explainFormat: mysql.models.ConfigurationVariables.ExplainFormat.Tree,
        explicitDefaultsForTimestamp: true,
        sqlGenerateInvisiblePrimaryKey: false,
        temptableMaxRam: 6188919724947668992,
        innodbChangeBuffering: mysql.models.ConfigurationVariables.InnodbChangeBuffering.None,
        innodbAdaptiveHashIndex: false,
        innodbUndoLogTruncate: true,
        tableDefinitionCache: 433469,
        tableOpenCache: 283170,
        relayLogSpaceLimit: 4578250281458464768,
        optimizerSwitch: "EXAMPLE-optimizerSwitch-Value",
        replicaTypeConversions: "EXAMPLE-replicaTypeConversions-Value",
        replicaParallelWorkers: 937,
        skipNameResolve: false,
        maxUserConnections: 640960097,
        joinBufferSize: 3225611946462790784,
        maxSeeksForKey: 1909854279009497089,
        rangeOptimizerMaxMemSize: 1054266433108209664,
        autoIncrementIncrement: 24116,
        autoIncrementOffset: 59927,
        innodbAutoincLockMode: 945,
        innodbRollbackOnTimeout: true,
        innodbOnlineAlterLogMaxSize: 4785623844069613568,
        innodbSortBufferSize: 50496106,
        innodbNumaInterleave: false,
        threadPoolSize: 259,
        longQueryTime: 15375739
      } 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_0zJ6L: "EXAMPLE_VALUE_kItEBLzFAjzn98dAWSe4"
      },
      definedTags: {
        EXAMPLE_KEY_bPIxT: {
          EXAMPLE_KEY_pEG0C: "EXAMPLE--Value"
        }
      }
    } as unknown) as mysql.models.CreateConfigurationDetails;

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