Public Access
1
0

feat: split research workflows and results into dedicated workspaces

This commit is contained in:
pguerrerox
2026-04-19 22:31:33 +00:00
parent dc7686f507
commit d1363d6677
23 changed files with 1646 additions and 713 deletions
+22 -5
View File
@@ -66,7 +66,19 @@ async function executeSearchJobAtCoordinates(
}
export async function runSearchForUser(db: Pool, userId: string, payload: RunSearchInput): Promise<RunSearchResult> {
const job = await createSearchJob(db, userId, payload);
const hasProvidedCoordinates = typeof payload.lat === 'number' && typeof payload.lng === 'number';
const job = hasProvidedCoordinates
? await createSearchJobForCoordinates(db, userId, {
name: payload.name || `${payload.businessType} in ${payload.location}`,
city: payload.location,
address: payload.location,
radiusKm: payload.radiusKm,
businessType: payload.businessType,
keywords: payload.keywords,
lat: payload.lat!,
lng: payload.lng!,
})
: await createSearchJob(db, userId, payload);
const jobId = job.id;
try {
@@ -75,14 +87,19 @@ export async function runSearchForUser(db: Pool, userId: string, payload: RunSea
throw new Error('GOOGLE_MAPS_SERVER_KEY is required for running research.');
}
const geocoded = await geocodeLocation(payload.location, env.GOOGLE_MAPS_SERVER_KEY);
await updateSearchJobCenter(db, jobId, geocoded.lat, geocoded.lng);
const resolvedCenter = hasProvidedCoordinates
? { lat: payload.lat!, lng: payload.lng! }
: await geocodeLocation(payload.location, env.GOOGLE_MAPS_SERVER_KEY);
if (!hasProvidedCoordinates) {
await updateSearchJobCenter(db, jobId, resolvedCenter.lat, resolvedCenter.lng);
}
const completedJob = await executeSearchJobAtCoordinates(db, {
jobId,
userId,
lat: geocoded.lat,
lng: geocoded.lng,
lat: resolvedCenter.lat,
lng: resolvedCenter.lng,
radiusKm: payload.radiusKm,
businessType: payload.businessType,
keywords: payload.keywords,
+2
View File
@@ -56,6 +56,8 @@ export type RunSearchInput = {
radiusKm: number;
businessType: string;
keywords?: string;
lat?: number;
lng?: number;
};
export type RunSearchResult = {