override fun generate()

in engine/src/main/kotlin/io/kotless/gen/factory/aws/apigateway/DeploymentFactory.kt [22:44]


    override fun generate(entity: Application.API.Deployment, context: GenerationContext): GenerationFactory.GenerationResult<Output> {
        val api = context.output.get(context.webapp.api, RestAPIFactory)
        val statics = context.webapp.api.statics.map { context.output.get(it, StaticRouteFactory).integration }
        val dynamics = context.webapp.api.dynamics.map { context.output.get(it, DynamicRouteFactory).integration }

        val deployment = api_gateway_deployment(context.names.tf(entity.name)) {
            depends_on = (statics + dynamics).map { link(it) }.toTypedArray()

            rest_api_id = api.rest_api_id
            stage_name = entity.version

            variables(mapOf("deployed_at" to eval(timestamp())))

            lifecycle {
                create_before_destroy = true
            }
        }

        val url = context.webapp.dns?.fqdn?.let { "https://$it" } ?: deployment::invoke_url.ref
        val output = TFOutput(context.names.tf("application", "url"), url)

        return GenerationFactory.GenerationResult(Output(deployment::stage_name.ref), deployment, output)
    }