fix: remove nested .git folders, re-add as normal directories
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { Collection } from "@discordjs/collection";
|
||||
import { connectWiseApi } from "../../constants";
|
||||
import { runCollector } from "../collector-client/runCollector";
|
||||
import {
|
||||
CollectorCompanyRecord,
|
||||
NormalizedCompanyRecord,
|
||||
} from "../../types/CompanySourceTypes";
|
||||
import { normalizeCompanyRecords } from "./companyTranslation";
|
||||
|
||||
const toCompanyCollection = (
|
||||
companies: NormalizedCompanyRecord[],
|
||||
): Collection<number, NormalizedCompanyRecord> => {
|
||||
const allCompanies = new Collection<number, NormalizedCompanyRecord>();
|
||||
|
||||
for (const company of companies) {
|
||||
allCompanies.set(company.id, company);
|
||||
}
|
||||
|
||||
return allCompanies;
|
||||
};
|
||||
|
||||
export const fetchAllCwCompanies = async (): Promise<
|
||||
Collection<number, NormalizedCompanyRecord>
|
||||
> => {
|
||||
try {
|
||||
console.log("[fetchAllCwCompanies] Attempting to fetch via collector...");
|
||||
const collectorCompanies =
|
||||
await runCollector<CollectorCompanyRecord[]>("fetchCompanies");
|
||||
if (!Array.isArray(collectorCompanies)) {
|
||||
throw new Error("Collector payload was not an array");
|
||||
}
|
||||
|
||||
console.log(
|
||||
`[fetchAllCwCompanies] ✓ Successfully used collector data (${collectorCompanies.length} companies)`,
|
||||
);
|
||||
|
||||
return toCompanyCollection(normalizeCompanyRecords(collectorCompanies));
|
||||
} catch (err) {
|
||||
console.error(
|
||||
`[fetchAllCwCompanies] ✗ Collector fetchCompanies failed, falling back to CW API:`,
|
||||
err instanceof Error ? { message: err.message, stack: err.stack } : err,
|
||||
);
|
||||
}
|
||||
|
||||
let allCompanies = new Collection<number, NormalizedCompanyRecord>();
|
||||
const pageCount = 1000;
|
||||
|
||||
const count = (await connectWiseApi.get("/company/companies/count")).data
|
||||
.count;
|
||||
const totalPages = Math.ceil(count / pageCount);
|
||||
|
||||
for (let page = 0; page < totalPages; page++) {
|
||||
const response = await connectWiseApi.get(
|
||||
`/company/companies?page=${page + 1}&pageSize=${pageCount}`,
|
||||
);
|
||||
const normalizedCompanies = normalizeCompanyRecords(response.data);
|
||||
|
||||
for (const company of normalizedCompanies) {
|
||||
allCompanies.set(company.id, company);
|
||||
}
|
||||
}
|
||||
|
||||
return allCompanies;
|
||||
};
|
||||
Reference in New Issue
Block a user