const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: "https://lenderfriend-fed55.firebaseio.com",
});
const accessCode = require('./method');
/**
* Create a new one-time invite code
*
* @function
*
* @requires module:method/create
*
* @param {object} data - Wrapper object for data
* @param {string} data.uid - Referrer’s Firebase User ID, e.g. hk_wx5555556.
*
* @return {object} Data object of Generated one-time invite code.
* Including inviteCode, description, expiration, and quota
*
* @example
* createInviteCode({
* uid: "hk_wx5555556",
* });
*/
exports.createInviteCode = functions.region('asia-east2').https
.onCall(({uid}) => {
return accessCode.create(uid);
});
/**
* Consume an invite code
*
* @function
*
* @requires module:method/use
*
* @param {object} data - Wrapper object for data
* @param {string} data.uid - Referee’s Firebase User ID, e.g. hk_wx5555556.
* @param {string} data.inviteCode - The invite code
*
* @return {boolean} Return true if invite code has been consumed successfully.
*
* @example
* useInviteCode({
* uid: "hk_wx5555556",
* inviteCode: "ENRICH",
* });
*/
exports.useInviteCode = functions.region('asia-east2').https
.onCall(({uid, inviteCode}) => {
return accessCode.use(uid, inviteCode);
});
/**
* Purge all invite codes that are past their expiration for a month.
* Runs daily at 12 midnight Hong Kong time.
*
* @requires module:method/purge
*
* @return {null} Always returns null
*/
exports.purgeInviteCode = functions.region('asia-east2').pubsub
.schedule('every day 00:00')
.timeZone('Asia/Hong_Kong')
.onRun(accessCode.purge);