Skip to content

Commit fa3bdd6

Browse files
committed
fix: remove brand crawled at
1 parent 261c3b8 commit fa3bdd6

File tree

4 files changed

+16
-41
lines changed

4 files changed

+16
-41
lines changed

initial.sql

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ CREATE TABLE IF NOT EXISTS reference_tables (
33
code INTEGER UNIQUE NOT NULL,
44
month INTEGER NOT NULL,
55
year INTEGER NOT NULL,
6-
crawled_at TIMESTAMP,
7-
brands_crawled_at TIMESTAMP
6+
crawled_at TIMESTAMP
87
);
98

109
CREATE TABLE IF NOT EXISTS brands (

src/crawler/processor.ts

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -94,24 +94,18 @@ export async function crawl(options: CrawlOptions = {}): Promise<void> {
9494
await repo.clearCrawlStatus(refRecord.id);
9595
}
9696

97-
// Phase 1: Crawl brands (if not already crawled)
98-
const brandsCrawled = await repo.isBrandsCrawled(refRecord.id);
99-
if (!brandsCrawled) {
100-
log(' Phase 1: Crawling brands...');
101-
const apiBrands = await fipeClient.getBrands(ref.Codigo);
102-
const filteredBrands = options.brandCode
103-
? apiBrands.filter((b) => b.Value === options.brandCode)
104-
: apiBrands;
105-
106-
for (const b of filteredBrands) {
107-
const brand = await repo.upsertBrand(b.Value, b.Label);
108-
await repo.upsertReferenceBrand(refRecord.id, brand.id);
109-
}
110-
await repo.markBrandsCrawled(refRecord.id);
111-
log(` Crawled ${filteredBrands.length} brands`);
112-
} else {
113-
log(' Phase 1: Brands already crawled');
97+
// Phase 1: Crawl brands (always fetch - cheap API call)
98+
log(' Phase 1: Crawling brands...');
99+
const apiBrands = await fipeClient.getBrands(ref.Codigo);
100+
const filteredBrands = options.brandCode
101+
? apiBrands.filter((b) => b.Value === options.brandCode)
102+
: apiBrands;
103+
104+
for (const b of filteredBrands) {
105+
const brand = await repo.upsertBrand(b.Value, b.Label);
106+
await repo.upsertReferenceBrand(refRecord.id, brand.id);
114107
}
108+
log(` Crawled ${filteredBrands.length} brands`);
115109

116110
// Phase 2: Crawl models for each uncrawled brand
117111
const uncrawledBrands = await repo.getUncrawledReferenceBrands(refRecord.id);
@@ -143,7 +137,10 @@ export async function crawl(options: CrawlOptions = {}): Promise<void> {
143137
}
144138
}
145139

146-
await repo.markReferenceBrandModelsCrawled(brand.id);
140+
// Only mark as crawled if we fetched ALL models (no filter)
141+
if (!options.modelCodes) {
142+
await repo.markReferenceBrandModelsCrawled(brand.id);
143+
}
147144
} catch {
148145
// Models fetch failed - leave uncrawled for retry
149146
log(` Error crawling models for ${brand.name}`);

src/db/repository.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,7 @@ export async function getCrawledReferences(): Promise<number[]> {
3939
return rows.map((r) => r.code);
4040
}
4141

42-
export async function isBrandsCrawled(referenceId: number): Promise<boolean> {
43-
const [ref] = await db
44-
.select({ brandsCrawledAt: referenceTables.brandsCrawledAt })
45-
.from(referenceTables)
46-
.where(eq(referenceTables.id, referenceId));
47-
return !!ref?.brandsCrawledAt;
48-
}
49-
50-
export async function markBrandsCrawled(referenceId: number) {
51-
await db
52-
.update(referenceTables)
53-
.set({ brandsCrawledAt: new Date() })
54-
.where(eq(referenceTables.id, referenceId));
55-
}
56-
5742
export async function clearCrawlStatus(referenceId: number) {
58-
await db
59-
.update(referenceTables)
60-
.set({ brandsCrawledAt: null })
61-
.where(eq(referenceTables.id, referenceId));
62-
6343
await db.delete(referenceModelYears).where(eq(referenceModelYears.referenceTableId, referenceId));
6444
await db.delete(referenceModels).where(eq(referenceModels.referenceTableId, referenceId));
6545
await db.delete(referenceBrands).where(eq(referenceBrands.referenceTableId, referenceId));

src/db/schema.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ export const referenceTables = pgTable(
1717
month: integer('month').notNull(),
1818
year: integer('year').notNull(),
1919
crawledAt: timestamp('crawled_at'),
20-
brandsCrawledAt: timestamp('brands_crawled_at'),
2120
},
2221
(table) => [index('idx_reference_year_month').on(table.year, table.month)],
2322
);

0 commit comments

Comments
 (0)