const jobsWithClientAndLocation = q
.from({ job: scheduleCollections.jobs })
.innerJoin({ client: scheduleCollections.clients }, ({ job, client }) =>
eq(client.id, job.client_id),
)
.leftJoin(
{ location: scheduleCollections.locations },
({ job, location }) => eq(location.id, job.location_id),
)
.select(({ job, client, location }) => ({
job,
client,
location,
}));
return (
q
.from({ placement: placementsCol })
.innerJoin(
{ jobData: jobsWithClientAndLocation },
({ placement, jobData }) => eq(jobData.job.id, placement.job_id),
)
// Placement Relations continued
.innerJoin(
{ jobTitle: scheduleCollections.jobTitles },
({ placement, jobTitle }) => eq(jobTitle.id, placement.job_title_id),
)
.leftJoin(
{ operative: scheduleCollections.operatives },
({ placement, operative }) =>
eq(operative.id, placement.operative_id),
)
.leftJoin(
{ supplier: scheduleCollections.suppliers },
({ placement, supplier }) => eq(supplier.id, placement.supplier_id),
)
.leftJoin(
{ supplierOperative: scheduleCollections.supplierOperatives },
({ placement, supplierOperative }) =>
eq(supplierOperative.id, placement.supplier_operative_id),
)
.orderBy(({ placement }) => placement.id)
const jobsWithClientAndLocation = q
.from({ job: scheduleCollections.jobs })
.innerJoin({ client: scheduleCollections.clients }, ({ job, client }) =>
eq(client.id, job.client_id),
)
.leftJoin(
{ location: scheduleCollections.locations },
({ job, location }) => eq(location.id, job.location_id),
)
.select(({ job, client, location }) => ({
job,
client,
location,
}));
return (
q
.from({ placement: placementsCol })
.innerJoin(
{ jobData: jobsWithClientAndLocation },
({ placement, jobData }) => eq(jobData.job.id, placement.job_id),
)
// Placement Relations continued
.innerJoin(
{ jobTitle: scheduleCollections.jobTitles },
({ placement, jobTitle }) => eq(jobTitle.id, placement.job_title_id),
)
.leftJoin(
{ operative: scheduleCollections.operatives },
({ placement, operative }) =>
eq(operative.id, placement.operative_id),
)
.leftJoin(
{ supplier: scheduleCollections.suppliers },
({ placement, supplier }) => eq(supplier.id, placement.supplier_id),
)
.leftJoin(
{ supplierOperative: scheduleCollections.supplierOperatives },
({ placement, supplierOperative }) =>
eq(supplierOperative.id, placement.supplier_operative_id),
)
.orderBy(({ placement }) => placement.id)