mirror of
https://github.com/orangecoding/fredy.git
synced 2026-06-16 12:31:07 +00:00
* migra for distance * adding distance calculator * adding ability to store home address * improve distance calculation * calculating distance * show distance in grid view * upgrading dependencies * moving to react 19 * ability to clone a job * fixing tests * polishing
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
/*
|
|
* Copyright (c) 2026 by Christian Kellner.
|
|
* Licensed under Apache-2.0 with Commons Clause and Attribution/Naming Clause
|
|
*/
|
|
|
|
import cron from 'node-cron';
|
|
import { getListingsToGeocode, updateListingGeocoordinates } from '../storage/listingsStorage.js';
|
|
import { geocodeAddress, isGeocodingPaused } from '../geocoding/geoCodingService.js';
|
|
import { getJobs } from '../storage/jobStorage.js';
|
|
import { calculateDistanceForJob } from '../geocoding/distanceService.js';
|
|
|
|
async function runTask() {
|
|
const listings = getListingsToGeocode();
|
|
if (listings.length > 0) {
|
|
for (const listing of listings) {
|
|
if (isGeocodingPaused()) {
|
|
break;
|
|
}
|
|
|
|
const coords = await geocodeAddress(listing.address);
|
|
if (coords) {
|
|
updateListingGeocoordinates(listing.id, coords.lat, coords.lng);
|
|
}
|
|
}
|
|
}
|
|
|
|
//additional run
|
|
const jobs = getJobs();
|
|
for (const job of jobs) {
|
|
calculateDistanceForJob(job.id, job.userId);
|
|
}
|
|
}
|
|
|
|
export async function initGeocodingCron() {
|
|
// run directly on start
|
|
await runTask();
|
|
// then every 6 hours
|
|
cron.schedule('0 */6 * * *', runTask);
|
|
}
|