Browse Source

feat(api): track received sms count stat

pull/8/head
isra el 2 years ago
parent
commit
3f63005c60
  1. 19
      api/src/gateway/gateway.service.ts
  2. 3
      api/src/gateway/schemas/device.schema.ts

19
api/src/gateway/gateway.service.ts

@ -170,6 +170,16 @@ export class GatewayService {
receivedAt: dto.receivedAt,
})
this.deviceModel
.findByIdAndUpdate(deviceId, {
$inc: { receivedSMSCount: 1 },
})
.exec()
.catch((e) => {
console.log('Failed to update receivedSMSCount')
console.log(e)
})
// TODO: Implement webhook to forward received SMS to user's callback URL
return sms
@ -207,15 +217,20 @@ export class GatewayService {
const devices = await this.deviceModel.find({ user: user._id })
const apiKeys = await this.authService.getUserApiKeys(user)
const totalSMSCount = devices.reduce((acc, device) => {
const totalSentSMSCount = devices.reduce((acc, device) => {
return acc + (device.sentSMSCount || 0)
}, 0)
const totalReceivedSMSCount = devices.reduce((acc, device) => {
return acc + (device.receivedSMSCount || 0)
}, 0)
const totalDeviceCount = devices.length
const totalApiKeyCount = apiKeys.length
return {
totalSMSCount,
totalSentSMSCount,
totalReceivedSMSCount,
totalDeviceCount,
totalApiKeyCount,
}

3
api/src/gateway/schemas/device.schema.ts

@ -46,6 +46,9 @@ export class Device {
@Prop({ type: Number, default: 0 })
sentSMSCount: number
@Prop({ type: Number, default: 0 })
receivedSMSCount: number
}
export const DeviceSchema = SchemaFactory.createForClass(Device)
Loading…
Cancel
Save