Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | 1x 1x 1x 1x 1x 1x | import {inject} from '@loopback/core';
import {LogChainDataSource} from '@logchain/datasources';
import {
AdditionalInformation,
AdditionalInformationRelations,
} from '@logchain/models/scan/additional-information.model';
import {BaseCrudRepository} from '../base-crud.repository.base';
import {TimelineStep} from '@logchain/types';
export class AdditionalInformationRepository extends BaseCrudRepository<
AdditionalInformation,
typeof AdditionalInformation.prototype.id,
AdditionalInformationRelations
> {
constructor(
@inject('datasources.logchain')
dataSource: LogChainDataSource,
) {
super(AdditionalInformation, dataSource);
}
async findByPMOIds(pmoIds: number[]) {
const result = await this.execute(
`
SELECT *
FROM additional_information
WHERE pmo_id = ANY($1)
ORDER BY created_at DESC
`,
[pmoIds],
);
return result;
}
async findByPMOIdsAndStatus(pmoIds: number[], status: number) {
const result = await this.execute(
`
SELECT *
FROM additional_information
WHERE pmo_id = ANY($1)
AND status = $2
ORDER BY created_at DESC
`,
[pmoIds, status],
);
return result;
}
async findLatestPerPmo(pmoIds: number[], status: number, stepCode: string | null) {
const result = await this.execute(
`
SELECT DISTINCT ON (ai.pmo_id) ai.*
FROM additional_information ai
LEFT JOIN (
SELECT pmo_id, MAX(event_time) AS latest_event_time
FROM timeline_event
WHERE pmo_id = ANY($1)
AND (
($3::text IS NULL OR step_code = $3)
OR step_code = $4
)
GROUP BY pmo_id
) te ON te.pmo_id = ai.pmo_id
WHERE ai.pmo_id = ANY($1)
AND ai.status = $2
AND (
te.latest_event_time IS NULL
OR ai.updated_at > te.latest_event_time
)
ORDER BY ai.pmo_id, ai.updated_at DESC
`,
[pmoIds, status, stepCode, TimelineStep.REJECT],
);
return result;
}
}
|