diff --git a/README.md b/README.md index 6764412..2e2a2d0 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ [![Build](https://github.com/librarian-org/librarian/actions/workflows/build.yml/badge.svg)](https://github.com/librarian-org/librarian/actions/workflows/build.yml) -> **NOTE**: This project is in Work-In-Progress stage, so it's not functional yet... - A free OpenSource software to handle with books. It's ideal for school libraries and for someone who have many books. diff --git a/src/electron/database/repository/TitlePublisherRepository.ts b/src/electron/database/repository/TitlePublisherRepository.ts index 76f5161..1ebfc30 100644 --- a/src/electron/database/repository/TitlePublisherRepository.ts +++ b/src/electron/database/repository/TitlePublisherRepository.ts @@ -1,23 +1,35 @@ import RepositoryBase from './RepositoryBase'; +import { BorrowStatus } from '../../../common/BorrowStatus'; interface ListTitlePublisher { where: unknown; } export default class TitlePublisherRepository extends RepositoryBase { - public async listTitle(content: ListTitlePublisher): Promise { + public async listTitle( + content: ListTitlePublisher + ): Promise { try { - const filter = { - relations: [ - 'title', - ], - }; + const freeTitles = await this.repository + .createQueryBuilder('titlePublisher') + .innerJoinAndSelect('titlePublisher.title', 'title') + .leftJoinAndSelect('titlePublisher.borrow', 'borrow') + .where('borrow.isReservation IS NULL') + .orWhere((qb) => { + const subQuery = qb + .subQuery() + .select('borrow.Id') + .from('borrow', 'borrow') + .where('borrow.status IN (:...ids)', { + ids: [BorrowStatus.Returned, BorrowStatus.LateReturned], + }) + .getQuery(); - // if (content.where) { - // filter = { ...filter, ...{ where: content } }; - // } + return `"titlePublisher"."id" IN ${subQuery}`; + }) + .getMany(); - return await this.repository.find(filter); + return freeTitles; } catch (err) { console.log(err); throw err;