From b006ec2db9d5432ed5498fcae61e055ac209efd0 Mon Sep 17 00:00:00 2001 From: "Ryan P. Brewster" Date: Tue, 21 May 2019 12:23:24 -0700 Subject: [PATCH] TypeScript-ify firestore API --- src/gcp/{firestore.js => firestore.ts} | 42 ++++++++++---------------- 1 file changed, 16 insertions(+), 26 deletions(-) rename src/gcp/{firestore.js => firestore.ts} (66%) diff --git a/src/gcp/firestore.js b/src/gcp/firestore.ts similarity index 66% rename from src/gcp/firestore.js rename to src/gcp/firestore.ts index 5f31a799979..61d3800f879 100644 --- a/src/gcp/firestore.js +++ b/src/gcp/firestore.ts @@ -1,8 +1,6 @@ -"use strict"; +import api = require("../api"); -var api = require("../api"); - -var _API_ROOT = "/v1beta1/"; +const _API_ROOT = "/v1beta1/"; /** * List all collection IDs. @@ -10,9 +8,9 @@ var _API_ROOT = "/v1beta1/"; * @param {string} project the Google Cloud project ID. * @return {Promise} a promise for an array of collection IDs. */ -var _listCollectionIds = function(project) { - var url = _API_ROOT + "projects/" + project + "/databases/(default)/documents:listCollectionIds"; - +export async function listCollectionIds(project: string): Promise { + const url = + _API_ROOT + "projects/" + project + "/databases/(default)/documents:listCollectionIds"; return api .request("POST", url, { auth: true, @@ -22,10 +20,10 @@ var _listCollectionIds = function(project) { pageSize: 2147483647, }, }) - .then(function(res) { + .then((res) => { return res.body.collectionIds || []; }); -}; +} /** * Delete a single Firestore document. @@ -36,12 +34,12 @@ var _listCollectionIds = function(project) { * @param {object} doc a Document object to delete. * @return {Promise} a promise for the delete operation. */ -var _deleteDocument = function(doc) { +export async function deleteDocument(doc: any): Promise { return api.request("DELETE", _API_ROOT + doc.name, { auth: true, origin: api.firestoreOrigin, }); -}; +} /** * Delete an array of Firestore documents. @@ -53,19 +51,17 @@ var _deleteDocument = function(doc) { * @param {object[]} docs an array of Document objects to delete. * @return {Promise} a promise for the number of deleted documents. */ -var _deleteDocuments = function(project, docs) { - var parent = "projects/" + project + "/databases/(default)/documents"; - var url = parent + ":commit"; +export async function deleteDocuments(project: string, docs: any[]): Promise { + const parent = "projects/" + project + "/databases/(default)/documents"; + const url = parent + ":commit"; - var writes = docs.map(function(doc) { + const writes = docs.map((doc) => { return { delete: doc.name, }; }); - var body = { - writes: writes, - }; + const body = { writes }; return api .request("POST", _API_ROOT + url, { @@ -73,13 +69,7 @@ var _deleteDocuments = function(project, docs) { data: body, origin: api.firestoreOrigin, }) - .then(function(res) { + .then((res) => { return res.body.writeResults.length; }); -}; - -module.exports = { - deleteDocument: _deleteDocument, - deleteDocuments: _deleteDocuments, - listCollectionIds: _listCollectionIds, -}; +}