Browse Source

feat(api): add gateway stats endpoint

pull/4/head
isra el 2 years ago
parent
commit
4565120b2a
  1. 7
      api/src/gateway/gateway.controller.ts
  2. 20
      api/src/gateway/gateway.service.ts

7
api/src/gateway/gateway.controller.ts

@ -21,6 +21,13 @@ import { CanModifyDevice } from './guards/can-modify-device.guard'
export class GatewayController {
constructor(private readonly gatewayService: GatewayService) {}
@UseGuards(AuthGuard)
@Get('/stats')
async getStats(@Request() req) {
const data = await this.gatewayService.getStatsForUser(req.user)
return { data }
}
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Register device' })
@ApiQuery({

20
api/src/gateway/gateway.service.ts

@ -5,10 +5,12 @@ import { Model } from 'mongoose'
import * as firebaseAdmin from 'firebase-admin'
import { RegisterDeviceInputDTO, SendSMSInputDTO } from './gateway.dto'
import { User } from '../users/schemas/user.schema'
import { AuthService } from 'src/auth/auth.service'
@Injectable()
export class GatewayService {
constructor(
@InjectModel(Device.name) private deviceModel: Model<DeviceDocument>,
private authService: AuthService,
) {}
async registerDevice(
@ -111,4 +113,22 @@ export class GatewayService {
)
}
}
async getStatsForUser(user: User) {
const devices = await this.deviceModel.find({ user: user._id })
const apiKeys = await this.authService.getUserApiKeys(user)
const totalSMSCount = devices.reduce((acc, device) => {
return acc + (device.sentSMSCount || 0)
}, 0)
const totalDeviceCount = devices.length
const totalApiKeyCount = apiKeys.length
return {
totalSMSCount,
totalDeviceCount,
totalApiKeyCount,
}
}
}
Loading…
Cancel
Save