class Jets::Resource::Route53::RecordSet

def cname

def cname
  if endpoint_types.include?("REGIONAL")
    "!GetAtt DomainName.RegionalDomainName"
  else
    "!GetAtt DomainName.DistributionDomainName"
  end
end

def definition

def definition
  {
    dns_record: {
      type: "AWS::Route53::RecordSet",
      properties: {
        hosted_zone_name: hosted_zone_name,
        comment: "DNS record managed by Jets",
        name: name,
        type: "CNAME",
        ttl: "60",
        resource_records: [
          cname,
        ],
      }
    }
  }
end

def domain_name

def domain_name
  Jets::Resource::ApiGateway::DomainName.new
end

def endpoint_types

def endpoint_types
  domain_name.endpoint_types
end

def hosted_zone_name

IE: mydomain.com
def hosted_zone_name
  name = Jets.config.domain.hosted_zone_name
  name.ends_with?('.') ? name : "#{name}." # add trailing period if missing
end

def name

IE: demo-dev.mydomain.com
def name
  # Weird looking but correct: domain_name is object and domain_name is also method
  domain_name.domain_name
end

def outputs

def outputs
  {
    "DnsRecord" => "!Ref DnsRecord",
  }
end