// 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.Release,
        bigTables: true,
        characterSetServer: mysql.models.ConfigurationVariables.CharacterSetServer.Macroman,
        collationServer: mysql.models.ConfigurationVariables.CollationServer.Ucs2LithuanianCi,
        connectionMemoryChunkSize: 505358355,
        connectionMemoryLimit: 2731972749558064640,
        defaultAuthenticationPlugin:
          mysql.models.ConfigurationVariables.DefaultAuthenticationPlugin.MysqlNativePassword,
        globalConnectionMemoryLimit: 7571001556924667904,
        globalConnectionMemoryTracking: true,
        transactionIsolation:
          mysql.models.ConfigurationVariables.TransactionIsolation.RepeatableRead,
        innodbFtServerStopwordTable: "EXAMPLE-innodbFtServerStopwordTable-Value",
        mandatoryRoles: "EXAMPLE-mandatoryRoles-Value",
        autocommit: false,
        foreignKeyChecks: false,
        groupReplicationConsistency:
          mysql.models.ConfigurationVariables.GroupReplicationConsistency.BeforeAndAfter,
        groupConcatMaxLen: 7447632229731688452,
        innodbFtEnableStopword: false,
        innodbLogWriterThreads: true,
        localInfile: true,
        mysqlFirewallMode: false,
        mysqlxEnableHelloNotice: false,
        sqlRequirePrimaryKey: true,
        sqlWarnings: false,
        binlogExpireLogsSeconds: 736,
        binlogRowMetadata: mysql.models.ConfigurationVariables.BinlogRowMetadata.Minimal,
        binlogRowValueOptions: "EXAMPLE-binlogRowValueOptions-Value",
        binlogTransactionCompression: true,
        innodbBufferPoolSize: 4198143262885920256,
        innodbFtResultCacheLimit: 1388114215,
        maxBinlogCacheSize: 9689579197956,
        maxConnectErrors: 3418100143144721409,
        maxHeapTableSize: 1572337583019793664,
        maxConnections: 73580,
        maxPreparedStmtCount: 475998,
        connectTimeout: 386836,
        cteMaxRecursionDepth: 2950992971,
        generatedRandomPasswordLength: 177,
        informationSchemaStatsExpiry: 3413869,
        innodbBufferPoolDumpPct: 26,
        innodbBufferPoolInstances: 39,
        innodbDdlBufferSize: 54967095,
        innodbDdlThreads: 55,
        innodbFtMaxTokenSize: 83,
        innodbFtMinTokenSize: 0,
        innodbFtNumWordOptimize: 404,
        innodbLockWaitTimeout: 234345745,
        innodbMaxPurgeLag: 1838630373,
        innodbMaxPurgeLagDelay: 553842,
        interactiveTimeout: 20669097,
        innodbStatsPersistentSamplePages: 3171768235087385601,
        innodbStatsTransientSamplePages: 2303356472636623873,
        innodbStrictMode: true,
        maxAllowedPacket: 1064326117,
        maxExecutionTime: 4261978766105009152,
        mysqlxConnectTimeout: 814115004,
        mysqlxDocumentIdUniquePrefix: 38631,
        mysqlxIdleWorkerThreadTimeout: 42,
        mysqlxInteractiveTimeout: 1319856,
        mysqlxMaxAllowedPacket: 743531573,
        mysqlxMinWorkerThreads: 48,
        mysqlxReadTimeout: 2060046,
        mysqlxWaitTimeout: 158246,
        mysqlxWriteTimeout: 2048033,
        netReadTimeout: 4481702,
        netWriteTimeout: 2310070,
        parserMaxMemSize: 4501424350634958976,
        queryAllocBlockSize: 2606314592,
        queryPreallocSize: 3452756452437547008,
        regexpTimeLimit: 1394249863,
        sqlMode: "EXAMPLE-sqlMode-Value",
        tmpTableSize: 3758825634105453056,
        mysqlxDeflateDefaultCompressionLevel: 3,
        mysqlxDeflateMaxClientCompressionLevel: 3,
        mysqlxLz4MaxClientCompressionLevel: 9,
        mysqlxLz4DefaultCompressionLevel: 3,
        mysqlxZstdMaxClientCompressionLevel: 15,
        mysqlxZstdDefaultCompressionLevel: 15,
        mysqlZstdDefaultCompressionLevel: 3,
        sortBufferSize: 5858900955838228480,
        waitTimeout: 866919,
        threadPoolDedicatedListeners: true,
        threadPoolMaxTransactionsLimit: 54762,
        timeZone: "EXAMPLE-timeZone-Value",
        blockEncryptionMode: "EXAMPLE-blockEncryptionMode-Value",
        binlogGroupCommitSyncDelay: 409778,
        binlogGroupCommitSyncNoDelayCount: 4141,
        replicaNetTimeout: 2947397,
        requireSecureTransport: true,
        innodbRedoLogCapacity: 116888456831,
        threadPoolTransactionDelay: 153174,
        threadPoolQueryThreadsPerGroup: 3754,
        explainFormat: mysql.models.ConfigurationVariables.ExplainFormat.Json,
        explicitDefaultsForTimestamp: true,
        sqlGenerateInvisiblePrimaryKey: false,
        temptableMaxRam: 2925605737271093760,
        innodbChangeBuffering: mysql.models.ConfigurationVariables.InnodbChangeBuffering.All,
        innodbAdaptiveHashIndex: true,
        innodbUndoLogTruncate: true,
        tableDefinitionCache: 494476,
        tableOpenCache: 23294,
        relayLogSpaceLimit: 7297580985183297536,
        optimizerSwitch: "EXAMPLE-optimizerSwitch-Value",
        replicaTypeConversions: "EXAMPLE-replicaTypeConversions-Value",
        replicaParallelWorkers: 840,
        skipNameResolve: true,
        maxUserConnections: 303813677,
        joinBufferSize: 2892061324047812736,
        maxSeeksForKey: 1897424356280647681,
        rangeOptimizerMaxMemSize: 8772276113411191808,
        autoIncrementIncrement: 27663,
        autoIncrementOffset: 46024,
        innodbAutoincLockMode: 241,
        innodbRollbackOnTimeout: true,
        innodbOnlineAlterLogMaxSize: 2252871219640531200,
        innodbSortBufferSize: 3318246,
        innodbNumaInterleave: true,
        threadPoolSize: 73,
        longQueryTime: 3712907
      } 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_sMVJ2: "EXAMPLE_VALUE_xE2QNDgMwt8HbkidpJDb"
      },
      definedTags: {
        EXAMPLE_KEY_hVOA8: {
          EXAMPLE_KEY_wMXBO: "EXAMPLE--Value"
        }
      }
    } as unknown) as mysql.models.CreateConfigurationDetails;

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