diff --git a/src/services/consumption.service.ts b/src/services/consumption.service.ts index e929762966bd32633c7d305d806d4fda35464ad5..48fb3f060614ce28957d46b43270676d3fbbdcdc 100644 --- a/src/services/consumption.service.ts +++ b/src/services/consumption.service.ts @@ -564,6 +564,7 @@ export default class ConsumptionDataManager { ): Promise<DataloadEntity[] | EnedisMonthlyAnalysisData[] | null> { const query: QueryDefinition = Q(doctype) .where({}) + .indexFields(['year', 'month']) .sortBy([{ year: 'asc' }, { month: 'asc' }]) .limitBy(1) const data = await this._client.query(query) @@ -575,8 +576,11 @@ export default class ConsumptionDataManager { ): Promise<DataloadEntity | null> { const query: QueryDefinition = Q(doctype) .where({ - price: { - $exists: false, + year: { + $gt: null, + }, + month: { + $gt: null, }, }) .partialIndex({ diff --git a/src/services/ecogesture.service.ts b/src/services/ecogesture.service.ts index b7e0ae588ca8bcf707310532dab4f50aa10bfdb1..0420aa5094fe95e39671618f3433766c7a17b709 100644 --- a/src/services/ecogesture.service.ts +++ b/src/services/ecogesture.service.ts @@ -121,11 +121,18 @@ export default class EcogestureService { if (seasonFilter && seasonFilter !== Season.NONE) { query = query .where({ season: { $ne: seasonFilter } }) + .indexFields(['season']) .sortBy([{ season: 'desc' }]) } else if (orderByID) { - query = query.where({}).sortBy([{ _id: 'asc' }]) + query = query + .where({}) + .indexFields(['_id']) + .sortBy([{ _id: 'asc' }]) } else { - query = query.where({}).sortBy([{ season: 'desc' }]) + query = query + .where({}) + .indexFields(['season']) + .sortBy([{ season: 'desc' }]) } const { data: ecogestures }: QueryResult<Ecogesture[]> = @@ -136,6 +143,7 @@ export default class EcogestureService { await this._client.query( Q(ECOGESTURE_DOCTYPE) .where({ season: { $eq: seasonFilter } }) + .indexFields(['season']) .sortBy([{ season: 'asc' }]) ) return [...ecogesturesWithSeason, ...ecogestures] diff --git a/src/services/enedisMonthlyAnalysisData.service.ts b/src/services/enedisMonthlyAnalysisData.service.ts index 70af4e00a46a9e7a73bb58922b001a60d9ac797c..0eff9590f3fb55bb6819be5b1e2624a3aa36e0e6 100644 --- a/src/services/enedisMonthlyAnalysisData.service.ts +++ b/src/services/enedisMonthlyAnalysisData.service.ts @@ -49,6 +49,7 @@ export default class EnedisMonthlyAnalysisDataService { > { const query: QueryDefinition = Q(ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE) .where({}) + .indexFields(['year', 'month']) .sortBy([{ year: 'desc' }, { month: 'desc' }]) .limitBy(1) const data = await this._client.query(query) @@ -115,6 +116,7 @@ export default class EnedisMonthlyAnalysisDataService { ): Promise<EnedisMonthlyAnalysisData[]> { const query: QueryDefinition = Q(ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE) .where({ year: year, month: month }) + .indexFields(['year', 'month']) .sortBy([{ year: 'desc' }, { month: 'desc' }]) .limitBy(1) const data = await this._client.query(query) @@ -161,6 +163,7 @@ export default class EnedisMonthlyAnalysisDataService { ): Promise<MaxPowerEntity[]> { const query: QueryDefinition = Q(ENEDIS_MAXPOWER_DOCTYPE) .where({ year: year, month: month }) + .indexFields(['year', 'month']) .sortBy([{ year: 'desc' }, { month: 'desc' }]) const data = await this._client.query(query) diff --git a/src/services/fluidsPrices.service.ts b/src/services/fluidsPrices.service.ts index acbaf74193adc63ab60866e89986231ab7a5dd81..7ea8c8fb3e3e072a5d7e5ae21de0a2c5ca4f47c9 100644 --- a/src/services/fluidsPrices.service.ts +++ b/src/services/fluidsPrices.service.ts @@ -40,13 +40,13 @@ export default class FluidPricesService { date: DateTime ): Promise<FluidPrice> { const query: QueryDefinition = Q(FLUIDSPRICES_DOCTYPE) - .indexFields(['startDate']) .where({ startDate: { $lte: date.toISO({ suppressMilliseconds: true }).toString(), }, fluidType, }) + .indexFields(['startDate']) .sortBy([{ startDate: 'desc' }]) .limitBy(1) @@ -61,8 +61,8 @@ export default class FluidPricesService { */ public async getAllLastPrices(): Promise<FluidPrice[]> { const query: QueryDefinition = Q(FLUIDSPRICES_DOCTYPE) - .indexFields(['fluidType']) .where({ endDate: { $eq: '' } }) + .indexFields(['fluidType']) .sortBy([{ fluidType: 'asc' }]) .limitBy(3) diff --git a/src/services/profileTypeEntity.service.ts b/src/services/profileTypeEntity.service.ts index b436858f0d00fa5bb5633b008c238baf84c0884d..bb68839a13cdca9313f5d79a101531ce07037132 100644 --- a/src/services/profileTypeEntity.service.ts +++ b/src/services/profileTypeEntity.service.ts @@ -30,6 +30,7 @@ export default class ProfileTypeEntityService { }: QueryResult<ProfileType[]> = await this._client.query( query .where({ updateDate: { $lte: date.toString() } }) + .indexFields(['updateDate']) .sortBy([{ updateDate: 'desc' }]) .limitBy(1) ) @@ -65,7 +66,8 @@ export default class ProfileTypeEntityService { data: [profileType], }: QueryResult<ProfileType[]> = await this._client.query( query - .where({ _id: { $gt: null } }) + .where({}) + .indexFields(['updateDate']) .sortBy([{ updateDate: 'desc' }]) .limitBy(1) ) @@ -96,6 +98,7 @@ export default class ProfileTypeEntityService { $gte: timePeriod.startDate.toString(), }, }) + .indexFields(['updateDate']) .sortBy([{ updateDate: 'asc' }]) .limitBy(100) ) diff --git a/src/services/queryRunner.service.ts b/src/services/queryRunner.service.ts index 6fa8128692d7b81e1c8f31e468c83f3a575140e3..dffb788de165216d9d5890ef1e6a3f7c239e5c93 100644 --- a/src/services/queryRunner.service.ts +++ b/src/services/queryRunner.service.ts @@ -58,14 +58,14 @@ export default class QueryRunner { return Q(doctype) .where(this.getPredicate(maxTimePeriod, TimeStep.HALF_AN_HOUR)) .indexFields(['load']) - .limitBy(1) .sortBy([{ load: 'desc' }]) + .limitBy(1) } return Q(doctype) .where(this.getPredicate(maxTimePeriod, timeStep)) .indexFields(['load']) - .limitBy(limit) .sortBy([{ load: 'desc' }]) + .limitBy(limit) } private buildFirstDateQuery( @@ -472,7 +472,7 @@ export default class QueryRunner { public async getEntries(fluidType: FluidType, timeStep: TimeStep) { const doctype = this.getRelevantDoctype(fluidType, timeStep) try { - const query = Q(doctype).where({}).limitBy(1) + const query = Q(doctype).limitBy(1) const result = await this._client.query(query) return result } catch (error) { diff --git a/src/services/terms.service.ts b/src/services/terms.service.ts index bb063f147f4557ab2e27a7d1b1a1cb083086472f..c9c3061a95372e312e8dffa58493fd61164a002c 100644 --- a/src/services/terms.service.ts +++ b/src/services/terms.service.ts @@ -21,6 +21,7 @@ export default class TermsService { public async getLastTerm(): Promise<Term> { const query: QueryDefinition = Q(TERMS_DOCTYPE) .where({}) + .indexFields(['acceptedAt']) .sortBy([{ acceptedAt: 'desc' }]) .limitBy(1) const { @@ -36,6 +37,7 @@ export default class TermsService { public async isLastTermValidated(): Promise<boolean> { const query: QueryDefinition = Q(TERMS_DOCTYPE) .where({}) + .indexFields(['acceptedAt']) .sortBy([{ acceptedAt: 'desc' }]) .limitBy(1) const { diff --git a/src/services/usageEvent.service.ts b/src/services/usageEvent.service.ts index 9b18e59c4e342fd543fb8410e12019c12a244779..33fb71ea2b15ace740910d1d21852b30ad64f971 100644 --- a/src/services/usageEvent.service.ts +++ b/src/services/usageEvent.service.ts @@ -80,10 +80,13 @@ export default class UsageEventService { // Get last Connection attempt Event const query: QueryDefinition = Q(USAGEEVENT_DOCTYPE) .where({ - type: UsageEventType.KONNECTOR_ATTEMPT_EVENT, target: konnectorSlug, + }) + .partialIndex({ + type: UsageEventType.KONNECTOR_ATTEMPT_EVENT, result: 'error', }) + .indexFields(['eventDate', 'type']) .sortBy([{ eventDate: 'desc' }]) .limitBy(1) const {