I am using nest.js and TypeORM. I need to make a query that returns all the rows from a table, where facility_id equals some value, and date is less than or equal to (<=) some date value.
I read the documentation about nest.js, and I couldn't find a proper way to do it.
Also, I read the official GitHub documentation for typeORM.
Here is my code. It would be great if it could be done with find method from EntityRepository
import { DeleteResult, EntityRepository, Repository, UpdateResult } from "typeorm";
import { Reservations} from "src/Entities/reservations.entity";
import { Facility} from "src/Entities/facility.entity";
import { PaginationParams } from "src/pagination.model";
import { LessThanOrEqual } from "typeorm";
@EntityRepository(Reservation)
export class ReservationRepository extends Repository<Reservation> {
async findByFacility(ustanovaId, paginationParams, dateParams): Promise<Reservation[]> {
return await this.find({where: { termin: LessThanOrEqual(new Date(2021, 0, 1))},
relations: ["users", "facility"],
take: paginationParams.limit,
skip: paginationParams.offset,
order: {
[paginationParams.orderby]: paginationParams.order.toUpperCase()
}});
}
}
Since you haven't given the proper information about Reservation
and Facility
entities, I am guessing two possible scenarios (usually both the scenarios will be true). You can select the code solution from either.
Reservation
entity has a facility_id
columnconst facilityId = "YourFacilityID";
return this.find({
where: {
termin: LessThanOrEqual(new Date(2021, 0, 1)),
facility_id: facilityId
},
relations: ["users", "facility"],
take: paginationParams.limit,
skip: paginationParams.offset,
order: {
[paginationParams.orderby]: paginationParams.order.toUpperCase()
}
});
Reservation
entity has facility
referenceReservation
entity has an OneToOne
or ManyToOne
relationship with Facility
entity where the relationship is named facility
and Facility
entity has id
which is equal to facility_id
you explained in the question.
const facilityId = "YourFacilityID";
return this.find({
where: {
termin: LessThanOrEqual(new Date(2021, 0, 1)),
facility: { id: facilityId }
},
relations: ["users", "facility"],
take: paginationParams.limit,
skip: paginationParams.offset,
order: {
[paginationParams.orderby]: paginationParams.order.toUpperCase()
}
});
Hope this helps. Cheers! 🍻