import { DwengoEntityRepository } from '../dwengo-entity-repository.js'; import { LearningObject } from '../../entities/content/learning-object.entity.js'; import { LearningObjectIdentifier } from '../../entities/content/learning-object-identifier.js'; import { Language } from '@dwengo-1/common/util/language'; export class LearningObjectRepository extends DwengoEntityRepository { public async findByIdentifier(identifier: LearningObjectIdentifier): Promise { return this.findOne( { hruid: identifier.hruid, language: identifier.language, version: identifier.version, }, { populate: ['keywords', 'admins'], } ); } public async findLatestByHruidAndLanguage(hruid: string, language: Language): Promise { return this.findOne( { hruid: hruid, language: language, }, { populate: ['keywords'], orderBy: { version: 'DESC', }, } ); } public async findAllByAdmin(adminUsername: string): Promise { return this.find( { admins: { username: adminUsername, }, }, { populate: ['admins'] } // Make sure to load admin relations ); } public async removeByIdentifier(identifier: LearningObjectIdentifier): Promise { const learningObject = await this.findByIdentifier(identifier); if (learningObject) { await this.em.removeAndFlush(learningObject); } return learningObject; } }