All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.aws.sdk.kotlin.services.glue.model.CreateCrawlerRequest.kt Maven / Gradle / Ivy

// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.glue.model

import aws.smithy.kotlin.runtime.SdkDsl

public class CreateCrawlerRequest private constructor(builder: Builder) {
    /**
     * A list of custom classifiers that the user has registered. By default, all built-in classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
     */
    public val classifiers: List? = builder.classifiers
    /**
     * Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior. For more information, see [Setting crawler configuration options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
     */
    public val configuration: kotlin.String? = builder.configuration
    /**
     * The name of the `SecurityConfiguration` structure to be used by this crawler.
     */
    public val crawlerSecurityConfiguration: kotlin.String? = builder.crawlerSecurityConfiguration
    /**
     * The Glue database where results are written, such as: `arn:aws:daylight:us-east-1::database/sometable/*`.
     */
    public val databaseName: kotlin.String? = builder.databaseName
    /**
     * A description of the new crawler.
     */
    public val description: kotlin.String? = builder.description
    /**
     * Specifies Lake Formation configuration settings for the crawler.
     */
    public val lakeFormationConfiguration: aws.sdk.kotlin.services.glue.model.LakeFormationConfiguration? = builder.lakeFormationConfiguration
    /**
     * Specifies data lineage configuration settings for the crawler.
     */
    public val lineageConfiguration: aws.sdk.kotlin.services.glue.model.LineageConfiguration? = builder.lineageConfiguration
    /**
     * Name of the new crawler.
     */
    public val name: kotlin.String? = builder.name
    /**
     * A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.
     */
    public val recrawlPolicy: aws.sdk.kotlin.services.glue.model.RecrawlPolicy? = builder.recrawlPolicy
    /**
     * The IAM role or Amazon Resource Name (ARN) of an IAM role used by the new crawler to access customer resources.
     */
    public val role: kotlin.String? = builder.role
    /**
     * A `cron` expression used to specify the schedule (see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
     */
    public val schedule: kotlin.String? = builder.schedule
    /**
     * The policy for the crawler's update and deletion behavior.
     */
    public val schemaChangePolicy: aws.sdk.kotlin.services.glue.model.SchemaChangePolicy? = builder.schemaChangePolicy
    /**
     * The table prefix used for catalog tables that are created.
     */
    public val tablePrefix: kotlin.String? = builder.tablePrefix
    /**
     * The tags to use with this crawler request. You may use tags to limit access to the crawler. For more information about tags in Glue, see [Amazon Web Services Tags in Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html) in the developer guide.
     */
    public val tags: Map? = builder.tags
    /**
     * A list of collection of targets to crawl.
     */
    public val targets: aws.sdk.kotlin.services.glue.model.CrawlerTargets? = builder.targets

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.glue.model.CreateCrawlerRequest = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("CreateCrawlerRequest(")
        append("classifiers=$classifiers,")
        append("configuration=$configuration,")
        append("crawlerSecurityConfiguration=$crawlerSecurityConfiguration,")
        append("databaseName=$databaseName,")
        append("description=$description,")
        append("lakeFormationConfiguration=$lakeFormationConfiguration,")
        append("lineageConfiguration=$lineageConfiguration,")
        append("name=$name,")
        append("recrawlPolicy=$recrawlPolicy,")
        append("role=$role,")
        append("schedule=$schedule,")
        append("schemaChangePolicy=$schemaChangePolicy,")
        append("tablePrefix=$tablePrefix,")
        append("tags=$tags,")
        append("targets=$targets")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = classifiers?.hashCode() ?: 0
        result = 31 * result + (configuration?.hashCode() ?: 0)
        result = 31 * result + (crawlerSecurityConfiguration?.hashCode() ?: 0)
        result = 31 * result + (databaseName?.hashCode() ?: 0)
        result = 31 * result + (description?.hashCode() ?: 0)
        result = 31 * result + (lakeFormationConfiguration?.hashCode() ?: 0)
        result = 31 * result + (lineageConfiguration?.hashCode() ?: 0)
        result = 31 * result + (name?.hashCode() ?: 0)
        result = 31 * result + (recrawlPolicy?.hashCode() ?: 0)
        result = 31 * result + (role?.hashCode() ?: 0)
        result = 31 * result + (schedule?.hashCode() ?: 0)
        result = 31 * result + (schemaChangePolicy?.hashCode() ?: 0)
        result = 31 * result + (tablePrefix?.hashCode() ?: 0)
        result = 31 * result + (tags?.hashCode() ?: 0)
        result = 31 * result + (targets?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as CreateCrawlerRequest

        if (classifiers != other.classifiers) return false
        if (configuration != other.configuration) return false
        if (crawlerSecurityConfiguration != other.crawlerSecurityConfiguration) return false
        if (databaseName != other.databaseName) return false
        if (description != other.description) return false
        if (lakeFormationConfiguration != other.lakeFormationConfiguration) return false
        if (lineageConfiguration != other.lineageConfiguration) return false
        if (name != other.name) return false
        if (recrawlPolicy != other.recrawlPolicy) return false
        if (role != other.role) return false
        if (schedule != other.schedule) return false
        if (schemaChangePolicy != other.schemaChangePolicy) return false
        if (tablePrefix != other.tablePrefix) return false
        if (tags != other.tags) return false
        if (targets != other.targets) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.glue.model.CreateCrawlerRequest = Builder(this).apply(block).build()

    @SdkDsl
    public class Builder {
        /**
         * A list of custom classifiers that the user has registered. By default, all built-in classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
         */
        public var classifiers: List? = null
        /**
         * Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior. For more information, see [Setting crawler configuration options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
         */
        public var configuration: kotlin.String? = null
        /**
         * The name of the `SecurityConfiguration` structure to be used by this crawler.
         */
        public var crawlerSecurityConfiguration: kotlin.String? = null
        /**
         * The Glue database where results are written, such as: `arn:aws:daylight:us-east-1::database/sometable/*`.
         */
        public var databaseName: kotlin.String? = null
        /**
         * A description of the new crawler.
         */
        public var description: kotlin.String? = null
        /**
         * Specifies Lake Formation configuration settings for the crawler.
         */
        public var lakeFormationConfiguration: aws.sdk.kotlin.services.glue.model.LakeFormationConfiguration? = null
        /**
         * Specifies data lineage configuration settings for the crawler.
         */
        public var lineageConfiguration: aws.sdk.kotlin.services.glue.model.LineageConfiguration? = null
        /**
         * Name of the new crawler.
         */
        public var name: kotlin.String? = null
        /**
         * A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.
         */
        public var recrawlPolicy: aws.sdk.kotlin.services.glue.model.RecrawlPolicy? = null
        /**
         * The IAM role or Amazon Resource Name (ARN) of an IAM role used by the new crawler to access customer resources.
         */
        public var role: kotlin.String? = null
        /**
         * A `cron` expression used to specify the schedule (see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
         */
        public var schedule: kotlin.String? = null
        /**
         * The policy for the crawler's update and deletion behavior.
         */
        public var schemaChangePolicy: aws.sdk.kotlin.services.glue.model.SchemaChangePolicy? = null
        /**
         * The table prefix used for catalog tables that are created.
         */
        public var tablePrefix: kotlin.String? = null
        /**
         * The tags to use with this crawler request. You may use tags to limit access to the crawler. For more information about tags in Glue, see [Amazon Web Services Tags in Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html) in the developer guide.
         */
        public var tags: Map? = null
        /**
         * A list of collection of targets to crawl.
         */
        public var targets: aws.sdk.kotlin.services.glue.model.CrawlerTargets? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.glue.model.CreateCrawlerRequest) : this() {
            this.classifiers = x.classifiers
            this.configuration = x.configuration
            this.crawlerSecurityConfiguration = x.crawlerSecurityConfiguration
            this.databaseName = x.databaseName
            this.description = x.description
            this.lakeFormationConfiguration = x.lakeFormationConfiguration
            this.lineageConfiguration = x.lineageConfiguration
            this.name = x.name
            this.recrawlPolicy = x.recrawlPolicy
            this.role = x.role
            this.schedule = x.schedule
            this.schemaChangePolicy = x.schemaChangePolicy
            this.tablePrefix = x.tablePrefix
            this.tags = x.tags
            this.targets = x.targets
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.glue.model.CreateCrawlerRequest = CreateCrawlerRequest(this)

        /**
         * construct an [aws.sdk.kotlin.services.glue.model.LakeFormationConfiguration] inside the given [block]
         */
        public fun lakeFormationConfiguration(block: aws.sdk.kotlin.services.glue.model.LakeFormationConfiguration.Builder.() -> kotlin.Unit) {
            this.lakeFormationConfiguration = aws.sdk.kotlin.services.glue.model.LakeFormationConfiguration.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.glue.model.LineageConfiguration] inside the given [block]
         */
        public fun lineageConfiguration(block: aws.sdk.kotlin.services.glue.model.LineageConfiguration.Builder.() -> kotlin.Unit) {
            this.lineageConfiguration = aws.sdk.kotlin.services.glue.model.LineageConfiguration.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.glue.model.RecrawlPolicy] inside the given [block]
         */
        public fun recrawlPolicy(block: aws.sdk.kotlin.services.glue.model.RecrawlPolicy.Builder.() -> kotlin.Unit) {
            this.recrawlPolicy = aws.sdk.kotlin.services.glue.model.RecrawlPolicy.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.glue.model.SchemaChangePolicy] inside the given [block]
         */
        public fun schemaChangePolicy(block: aws.sdk.kotlin.services.glue.model.SchemaChangePolicy.Builder.() -> kotlin.Unit) {
            this.schemaChangePolicy = aws.sdk.kotlin.services.glue.model.SchemaChangePolicy.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.glue.model.CrawlerTargets] inside the given [block]
         */
        public fun targets(block: aws.sdk.kotlin.services.glue.model.CrawlerTargets.Builder.() -> kotlin.Unit) {
            this.targets = aws.sdk.kotlin.services.glue.model.CrawlerTargets.invoke(block)
        }

        internal fun correctErrors(): Builder {
            return this
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy