$entries URL 항목 */ public function upsertForResource(string $type, string $id, array $entries): void; /** * 한 리소스의 사이트맵 URL 행을 모두 제거합니다(비공개/삭제 시). * * @param string $type 리소스 유형 * @param string $id 리소스 PK (문자열) */ public function removeForResource(string $type, string $id): void; /** * 공개(is_visible) URL 을 id 순으로 스트리밍합니다(유계 메모리). * * @param string|null $contributor 기여자 식별자로 스코핑 (null = 전체) * @return iterable URL 순회자 */ public function streamVisible(?string $contributor = null): iterable; /** * 공개(is_visible) URL 총 개수를 반환합니다. * * @return int 공개 URL 수 */ public function countVisible(): int; /** * 한 기여자의 모든 사이트맵 URL 행을 전량 대체합니다(전체 재생성). * * 기여자 스코프로 기존 행을 제거한 뒤 스트림을 청크 삽입하여 * 대용량에서도 메모리를 유계로 유지합니다. * * @param string $contributor 기여자 식별자 * @param iterable $entries URL 항목 스트림 * @return int 삽입된 행 수 (진행상황 누적 URL 표기용 — count 쿼리 없이 스트림 누적) */ public function replaceAllForContributor(string $contributor, iterable $entries): int; }