def ingest_dns_record(neo4j_session, name, value, type, update_tag, points_to_record):
    """
    Ingest a new DNS record

    :param neo4j_session: Neo4j session object
    :param name: record name
    :param value: record value
    :param type: record type
    :param update_tag: Update tag to set the node with and childs
    :param points_to_record: parent record to set DNS_POINTS_TO relationship to. Can be None
    :return: the intel graph node id for the new/merged record
    """
    ingest = """
    MERGE (record:DNSRecord{id: {Id}})
    ON CREATE SET record.firstseen = timestamp(), record.name = {Name}, record.type = {Type}
    SET record.lastupdated = {update_tag}, record.value = {Value}
    WITH record
    MATCH (n{id: {PointsToId}})
    MERGE (record)-[r:DNS_POINTS_TO]->(n)
    ON CREATE SET r.firstseen = timestamp()
    SET r.lastupdated = {update_tag}
    """

    record_id = f"{name}+{type}"

    neo4j_session.run(
        ingest,
        Id=record_id,
        Name=name,
        Type=type,
        Value=value,
        PointsToId=points_to_record,
        update_tag=update_tag,
    )

    return record_id