import { NaverRealEstate } from "./services/naver.service";
import { realtorIds } from "./config";

// 사용 예제
async function main() {
  for (const realtorId of realtorIds) {
    const naver = new NaverRealEstate({
      realtorId: realtorId,
    });
    try {
      await naver.resetActiveStatus();

      let cookie = await naver.getApiCookie();

      let seed = await naver.fetchSeed(cookie);

      console.log("Seed:", seed);

      // 3. 등록된 매물(Article) 목록 가져오기 (자동으로 DB에 저장됨)
      console.log("\n매물 목록 가져오는 중...");
      const articles = await naver.getArticlesAndSave();
      console.log(`\n총 ${articles.length}개의 매물 발견`);

      // 삭제된 매물 삭제
      await naver.deleteUnactiveArticles();

      // 삭제되지 않은 매물 가져옴
      let activeArticles = await naver.getActiveArticles(realtorId);
      activeArticles = activeArticles.filter(
        (article) => article.brokerName === null
      );

      console.log(`\n총 ${activeArticles.length}개의 매물 발견`);

      // 2. DB에서 Seed 불러오기 시도
      console.log("Seed 불러오는 중...");

      for (let i = 0; i < activeArticles.length; i += 10) {
        const batch = activeArticles.slice(i, i + 10);
        await Promise.allSettled(
          batch.map((article) => {
            return naver.updateBrokerInfo(article.articleNumber, cookie);
          })
        );
      }
    } catch (error) {
      console.error("오류 발생:", error);
    }
  }
}

const sleep = (ms: number) => new Promise((res) => setTimeout(res, ms));

// 실행
main();
