// 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.CaseInsensitiveLowercase
      } as unknown) as mysql.models.InitializationVariables,
      variables: ({
        completionType: mysql.models.ConfigurationVariables.CompletionType.Chain,
        bigTables: false,
        characterSetServer: mysql.models.ConfigurationVariables.CharacterSetServer.Cp850,
        collationServer: mysql.models.ConfigurationVariables.CollationServer.Utf8LatvianCi,
        connectionMemoryChunkSize: 463086993,
        connectionMemoryLimit: 6415733117196989440,
        defaultAuthenticationPlugin:
          mysql.models.ConfigurationVariables.DefaultAuthenticationPlugin.MysqlNativePassword,
        globalConnectionMemoryLimit: 4769580953694196736,
        globalConnectionMemoryTracking: true,
        transactionIsolation: mysql.models.ConfigurationVariables.TransactionIsolation.Serializable,
        innodbFtServerStopwordTable: "EXAMPLE-innodbFtServerStopwordTable-Value",
        mandatoryRoles: "EXAMPLE-mandatoryRoles-Value",
        autocommit: false,
        foreignKeyChecks: false,
        groupReplicationConsistency:
          mysql.models.ConfigurationVariables.GroupReplicationConsistency.After,
        groupConcatMaxLen: 6845512445532319748,
        innodbFtEnableStopword: false,
        innodbLogWriterThreads: false,
        localInfile: false,
        mysqlFirewallMode: false,
        mysqlxEnableHelloNotice: false,
        sqlRequirePrimaryKey: true,
        sqlWarnings: true,
        binlogExpireLogsSeconds: 939,
        binlogRowMetadata: mysql.models.ConfigurationVariables.BinlogRowMetadata.Minimal,
        binlogRowValueOptions: "EXAMPLE-binlogRowValueOptions-Value",
        binlogTransactionCompression: false,
        innodbBufferPoolSize: 6903110900563980288,
        innodbFtResultCacheLimit: 361148444,
        maxBinlogCacheSize: 38659359960436,
        maxConnectErrors: 833942590592193537,
        maxHeapTableSize: 8529152172255246336,
        maxConnections: 1816,
        maxPreparedStmtCount: 4002951,
        connectTimeout: 16102774,
        cteMaxRecursionDepth: 3924403556,
        generatedRandomPasswordLength: 209,
        informationSchemaStatsExpiry: 9090918,
        innodbBufferPoolDumpPct: 70,
        innodbBufferPoolInstances: 8,
        innodbDdlBufferSize: 3893504584,
        innodbDdlThreads: 1,
        innodbFtMaxTokenSize: 32,
        innodbFtMinTokenSize: 9,
        innodbFtNumWordOptimize: 125,
        innodbLockWaitTimeout: 341748714,
        innodbMaxPurgeLag: 724339957,
        innodbMaxPurgeLagDelay: 459362,
        interactiveTimeout: 4932433,
        innodbStatsPersistentSamplePages: 730793502536333313,
        innodbStatsTransientSamplePages: 8316331458820272129,
        innodbStrictMode: false,
        maxAllowedPacket: 777913529,
        maxExecutionTime: 467627863671370752,
        mysqlxConnectTimeout: 851993111,
        mysqlxDocumentIdUniquePrefix: 39194,
        mysqlxIdleWorkerThreadTimeout: 28,
        mysqlxInteractiveTimeout: 1824057,
        mysqlxMaxAllowedPacket: 933917644,
        mysqlxMinWorkerThreads: 63,
        mysqlxReadTimeout: 217738,
        mysqlxWaitTimeout: 595794,
        mysqlxWriteTimeout: 667980,
        netReadTimeout: 18134312,
        netWriteTimeout: 2011430,
        parserMaxMemSize: 5033382133085994624,
        queryAllocBlockSize: 3844383336,
        queryPreallocSize: 8606463812513799168,
        regexpTimeLimit: 336185688,
        sqlMode: "EXAMPLE-sqlMode-Value",
        tmpTableSize: 6476384317416946688,
        mysqlxDeflateDefaultCompressionLevel: 2,
        mysqlxDeflateMaxClientCompressionLevel: 1,
        mysqlxLz4MaxClientCompressionLevel: 15,
        mysqlxLz4DefaultCompressionLevel: 10,
        mysqlxZstdMaxClientCompressionLevel: 2,
        mysqlxZstdDefaultCompressionLevel: 1,
        mysqlZstdDefaultCompressionLevel: 3,
        sortBufferSize: 6623572353101258752,
        waitTimeout: 20934,
        threadPoolDedicatedListeners: true,
        threadPoolMaxTransactionsLimit: 57426,
        timeZone: "EXAMPLE-timeZone-Value",
        blockEncryptionMode: "EXAMPLE-blockEncryptionMode-Value",
        binlogGroupCommitSyncDelay: 897475,
        binlogGroupCommitSyncNoDelayCount: 76237,
        replicaNetTimeout: 10060325,
        requireSecureTransport: true,
        innodbRedoLogCapacity: 77749157199,
        threadPoolTransactionDelay: 6646,
        threadPoolQueryThreadsPerGroup: 3317,
        explainFormat: mysql.models.ConfigurationVariables.ExplainFormat.Traditional,
        explicitDefaultsForTimestamp: true,
        sqlGenerateInvisiblePrimaryKey: false,
        temptableMaxRam: 1181900323220315648,
        innodbChangeBuffering: mysql.models.ConfigurationVariables.InnodbChangeBuffering.Deletes,
        innodbAdaptiveHashIndex: false,
        innodbUndoLogTruncate: true,
        tableDefinitionCache: 181205,
        tableOpenCache: 48448,
        relayLogSpaceLimit: 238381257219408896,
        optimizerSwitch: "EXAMPLE-optimizerSwitch-Value",
        replicaTypeConversions: "EXAMPLE-replicaTypeConversions-Value",
        replicaParallelWorkers: 17,
        skipNameResolve: false,
        maxUserConnections: 1314203190,
        joinBufferSize: 7832647155947784320,
        maxSeeksForKey: 8674122111764927489,
        rangeOptimizerMaxMemSize: 6347547133863245824,
        autoIncrementIncrement: 58276,
        autoIncrementOffset: 61531,
        innodbAutoincLockMode: 649,
        innodbRollbackOnTimeout: false,
        innodbOnlineAlterLogMaxSize: 4592445279013983232,
        innodbSortBufferSize: 59154082,
        innodbNumaInterleave: false,
        threadPoolSize: 74,
        longQueryTime: 24428901
      } 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_SaTdC: "EXAMPLE_VALUE_2mmRN6ORl5TUOM0BmGPk"
      },
      definedTags: {
        EXAMPLE_KEY_2UfKY: {
          EXAMPLE_KEY_uuHmT: "EXAMPLE--Value"
        }
      }
    } as unknown) as mysql.models.CreateConfigurationDetails;

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