import {FirestoreAPI} from './FirestoreAPI'; import {App, Firestore} from './FirestoreTypes'; import {Device} from '../models'; import {DevicesAPI} from '../DevicesAPI'; import admin from 'firebase-admin'; import DocumentSnapshot = admin.firestore.DocumentSnapshot; export class FirebaseDevicesAPI extends FirestoreAPI implements DevicesAPI { constructor(app: App) { super(app); } get = async (uid: string, id: string): Promise => { const snap = await this.deviceRef(uid, id).get(); return snap.exists ? (snap.data() as Device) : undefined; }; list = async (uid: string): Promise => { const docs = await (this.devicesRef( uid, ) as admin.firestore.CollectionReference).listDocuments(); const snaps = await Promise.all( docs.map>((doc) => doc.get()), ); return snaps.map((snap) => snap.data() as Device); }; delete = async (uid: string, id: string): Promise => { await this.deviceRef(uid, id).delete(); }; }