UNPKG

@exweiv/weiv-data

Version:

Custom API Library for Wix sites to connect MongoDB. Designed to easily switch from wix-data APIs.

230 lines (229 loc) 10.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.onMemberCreated = onMemberCreated; exports.onMemberUpdated = onMemberUpdated; exports.onMemberDeleted = onMemberDeleted; exports.onBadgeCreated = onBadgeCreated; exports.onBadgeUpdated = onBadgeUpdated; exports.onBadgeDeleted = onBadgeDeleted; const error_manager_1 = require("../Errors/error_manager"); const insert_1 = require("../Functions/insert"); const native_1 = require("../Functions/native"); const sleep_1 = require("./sleep"); const wix_data_1 = __importDefault(require("wix-data")); const weiv_data_config_1 = require("../Config/weiv_data_config"); const logCollection = "WeivDataWixAppsSyncLogs/WixMembers"; async function onMemberCreated(event) { try { if (!event) { (0, error_manager_1.kaptanLogar)("00025"); } await (0, sleep_1.sleep)(1000); const memberId = event.entity._id; const { syncDatabase, enableSyncLogs } = (0, weiv_data_config_1.getWeivDataConfigs)(); if (enableSyncLogs) { console.info(`Wix Members Created - ${memberId}`); } if (!syncDatabase) { (0, error_manager_1.kaptanLogar)("00026"); } const { readyFullData, readyPrivateData, readyPublicData } = await getMemberData(memberId); Promise.all([ (await (0, native_1.native)(`${syncDatabase}/WixMembersPublicData`, true)).insertOne(readyPublicData, { retryWrites: true }), (await (0, native_1.native)(`${syncDatabase}/WixMembersPrivateData`, true)).insertOne(readyPrivateData, { retryWrites: true }), (await (0, native_1.native)(`${syncDatabase}/WixMembersFullData`, true)).insertOne(readyFullData, { retryWrites: true }), ]); } catch (err) { (0, insert_1.insert)(logCollection, { message: "Member couldn't be created", entityId: event.entity._id, metadata: event.metadata }, { suppressAuth: true, suppressHooks: true }); (0, error_manager_1.kaptanLogar)("00024", `Couldn't insert member when syncing: ${err}`); } } ; async function onMemberUpdated(event) { try { if (!event) { (0, error_manager_1.kaptanLogar)("00025"); } await (0, sleep_1.sleep)(1000); const memberId = event.entity._id; const { syncDatabase, enableSyncLogs } = (0, weiv_data_config_1.getWeivDataConfigs)(); if (enableSyncLogs) { console.info(`Wix Members Updated - ${memberId}`); } if (!syncDatabase) { (0, error_manager_1.kaptanLogar)("00026"); } const { readyFullData, readyPrivateData, readyPublicData } = await getMemberData(memberId); const find = { "entityId": { $eq: memberId } }; Promise.all([ (await (0, native_1.native)(`${syncDatabase}/WixMembersPublicData`, true)).updateOne(find, { $set: readyPublicData }, { retryWrites: true }), (await (0, native_1.native)(`${syncDatabase}/WixMembersPrivateData`, true)).updateOne(find, { $set: readyPrivateData }, { retryWrites: true }), (await (0, native_1.native)(`${syncDatabase}/WixMembersFullData`, true)).updateOne(find, { $set: readyFullData }, { retryWrites: true }), ]); } catch (err) { (0, insert_1.insert)(logCollection, { message: "Member couldn't be updated", entityId: event.entity._id, metadata: event.metadata }, { suppressAuth: true, suppressHooks: true }); (0, error_manager_1.kaptanLogar)("00024", `Couldn't update member when syncing: ${err}`); } } ; async function onMemberDeleted(event) { try { if (!event) { (0, error_manager_1.kaptanLogar)("00025"); } const memberId = event.metadata.entityId; const { syncDatabase, enableSyncLogs } = (0, weiv_data_config_1.getWeivDataConfigs)(); if (enableSyncLogs) { console.info(`Wix Members Deleted - ${memberId}`); } if (!syncDatabase) { (0, error_manager_1.kaptanLogar)("00026"); } const find = { "entityId": { $eq: memberId } }; Promise.all([ (await (0, native_1.native)(`${syncDatabase}/WixMembersPublicData`, true)).deleteMany(find, { ordered: false, retryWrites: true }), (await (0, native_1.native)(`${syncDatabase}/WixMembersPrivateData`, true)).deleteMany(find, { ordered: false, retryWrites: true }), (await (0, native_1.native)(`${syncDatabase}/WixMembersFullData`, true)).deleteMany(find, { ordered: false, retryWrites: true }), ]); } catch (err) { (0, insert_1.insert)(logCollection, { message: "Member couldn't deleted", entityId: event.metadata.entityId, metadata: event.metadata }, { suppressAuth: true, suppressHooks: true }); (0, error_manager_1.kaptanLogar)("00024", `Couldn't update member when syncing: ${err}`); } } ; async function onBadgeCreated(event) { try { if (!event) { (0, error_manager_1.kaptanLogar)("00025"); } await (0, sleep_1.sleep)(1000); const badgeId = event.entity._id; const { syncDatabase, enableSyncLogs } = (0, weiv_data_config_1.getWeivDataConfigs)(); if (enableSyncLogs) { console.info(`Wix Members Badge Created - ${badgeId}`); } if (!syncDatabase) { (0, error_manager_1.kaptanLogar)("00026"); } const readyBadgeData = await getBadgeData(badgeId); (await (0, native_1.native)(`${syncDatabase}/WixMembersBadges`, true)).insertOne(readyBadgeData, { retryWrites: true }); } catch (err) { (0, insert_1.insert)(logCollection, { message: "Member badge couldn't be created", entityId: event.entity._id, metadata: event.metadata }, { suppressAuth: true, suppressHooks: true }); (0, error_manager_1.kaptanLogar)("00024", `Couldn't create badge when syncing: ${err}`); } } async function onBadgeUpdated(event) { try { if (!event) { (0, error_manager_1.kaptanLogar)("00025"); } await (0, sleep_1.sleep)(1000); const badgeId = event.entity._id; const { syncDatabase, enableSyncLogs } = (0, weiv_data_config_1.getWeivDataConfigs)(); if (enableSyncLogs) { console.info(`Wix Members Badge Updated - ${badgeId}`); } if (!syncDatabase) { (0, error_manager_1.kaptanLogar)("00026"); } const readyBadgeData = await getBadgeData(badgeId); const find = { "entityId": { $eq: badgeId } }; (await (0, native_1.native)(`${syncDatabase}/WixMembersBadges`, true)).updateOne(find, { $set: readyBadgeData }, { retryWrites: true }); } catch (err) { (0, insert_1.insert)(logCollection, { message: "Member badge couldn't be updated", entityId: event.entity._id, metadata: event.metadata }, { suppressAuth: true, suppressHooks: true }); (0, error_manager_1.kaptanLogar)("00024", `Couldn't update badge when syncing: ${err}`); } } async function onBadgeDeleted(event) { try { if (!event) { (0, error_manager_1.kaptanLogar)("00025"); } const badgeId = event.metadata.entityId; const { syncDatabase, enableSyncLogs } = (0, weiv_data_config_1.getWeivDataConfigs)(); if (enableSyncLogs) { console.info(`Wix Members Badge Deleted - ${badgeId}`); } if (!syncDatabase) { (0, error_manager_1.kaptanLogar)("00026"); } const find = { "entityId": { $eq: badgeId } }; (await (0, native_1.native)(`${syncDatabase}/WixMembersBadges`, true)).deleteMany(find, { ordered: false, retryWrites: true }); } catch (err) { (0, insert_1.insert)(logCollection, { message: "Member badge couldn't deleted", entityId: event.metadata.entityId, metadata: event.metadata }, { suppressAuth: true, suppressHooks: true }); (0, error_manager_1.kaptanLogar)("00024", `Couldn't delete badge when syncing: ${err}`); } } async function getMemberData(memberId) { try { if (!memberId) { (0, error_manager_1.kaptanLogar)("00024", "Member ID is undefined when syncing WixMembers"); } const [publicData, privateData, fullData] = await Promise.all([ wix_data_1.default.get("Members/PublicData", memberId, { suppressAuth: true, suppressHooks: true, consistentRead: true }), wix_data_1.default.get("Members/PrivateMembersData", memberId, { suppressAuth: true, suppressHooks: true, consistentRead: true }), wix_data_1.default.get("Members/FullData", memberId, { suppressAuth: true, suppressHooks: true, consistentRead: true }), ]); const readyPublicData = { ...publicData, entityId: publicData._id }; delete readyPublicData._id; const readyPrivateData = { ...privateData, entityId: privateData._id, }; delete readyPrivateData._id; const readyFullData = { ...fullData, entityId: fullData._id, }; delete readyFullData._id; return { readyPublicData, readyPrivateData, readyFullData }; } catch (err) { (0, error_manager_1.kaptanLogar)("00024", `Couldn't get member data when syncing: ${err}`); } } async function getBadgeData(badgeId) { try { if (!badgeId) { (0, error_manager_1.kaptanLogar)("00024", "Badge ID is undefined when syncing Wix Members Badges"); } const badgeData = await wix_data_1.default.get("Members/Badges", badgeId, { suppressAuth: true, consistentRead: true }); const readyBadgeData = { ...badgeData, entityId: badgeData._id }; delete readyBadgeData._id; return readyBadgeData; } catch (err) { (0, error_manager_1.kaptanLogar)("00024", `Couldn't get badge data when syncing: ${err}`); } }