Implement DeviceModel.distinctCriteriaValues() — fixes 500 on /api/v1/devices/criteria-values. Uses MongoDB distinct() to get unique manufacturers, OUIs, productClasses from devices collection. Build status: Success
This commit is contained in:
1 parent
aad93911e4
commit
23b5e33a6b
2 files changed
+19
-1
No files matched your search
@@ -8,7 +8,7 @@ export default class DevicesController {
|
||||
private deviceService = new DeviceService()
|
||||
|
||||
async criteriaValues({ response }: HttpContext) {
|
||||
const values = await (DeviceModel as any).distinctCriteriaValues()
|
||||
const values = await DeviceModel.distinctCriteriaValues()
|
||||
return response.json(values)
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,24 @@ export default class DeviceModel extends BaseModel {
|
||||
return { data, total }
|
||||
}
|
||||
|
||||
static async distinctCriteriaValues(): Promise<{
|
||||
manufacturers: string[]
|
||||
ouis: string[]
|
||||
productClasses: string[]
|
||||
}> {
|
||||
const collection = this.getCollection()
|
||||
const [manufacturers, ouis, productClasses] = await Promise.all([
|
||||
collection.distinct('deviceId.manufacturer'),
|
||||
collection.distinct('deviceId.oui'),
|
||||
collection.distinct('deviceId.productClass'),
|
||||
])
|
||||
return {
|
||||
manufacturers: manufacturers.filter((v: any) => v && typeof v === 'string').sort(),
|
||||
ouis: ouis.filter((v: any) => v && typeof v === 'string').sort(),
|
||||
productClasses: productClasses.filter((v: any) => v && typeof v === 'string').sort(),
|
||||
}
|
||||
}
|
||||
|
||||
static async createOrUpdate(device: Partial<DeviceRecord>): Promise<DeviceRecord> {
|
||||
const collection = this.getCollection()
|
||||
let filter: Filter<any> = {}
|
||||
|
||||
Reference in new issue
Block a user