UNPKG

mixpanel

Version:

A simple server-side API for mixpanel

109 lines (85 loc) 3.47 kB
/** * Group profile methods. Learn more: https://help.mixpanel.com/hc/en-us/articles/360025333632 */ const { ProfileHelpers } = require("./profile_helpers"); class MixpanelGroups extends ProfileHelpers() { constructor(mp_instance) { super(); this.mixpanel = mp_instance; this.endpoint = "/groups"; } /** groups.set_once(group_key, group_id, prop, to, modifiers, callback) --- The same as groups.set, but adds a property value to a group only if it has not been set before. */ set_once(group_key, group_id, prop, to, modifiers, callback) { const identifiers = { $group_key: group_key, $group_id: group_id }; this._set(prop, to, modifiers, callback, { identifiers, set_once: true }); } /** groups.set(group_key, group_id, prop, to, modifiers, callback) --- set properties on a group profile usage: mixpanel.groups.set('company', 'Acme Inc.', '$name', 'Acme Inc.'); mixpanel.groups.set('company', 'Acme Inc.', { 'Industry': 'widgets', '$name': 'Acme Inc.', }); */ set(group_key, group_id, prop, to, modifiers, callback) { const identifiers = { $group_key: group_key, $group_id: group_id }; this._set(prop, to, modifiers, callback, { identifiers }); } /** groups.delete_group(group_key, group_id, modifiers, callback) --- delete a group profile permanently usage: mixpanel.groups.delete_group('company', 'Acme Inc.'); */ delete_group(group_key, group_id, modifiers, callback) { const identifiers = { $group_key: group_key, $group_id: group_id }; this._delete_profile({ identifiers, modifiers, callback }); } /** groups.remove(group_key, group_id, data, modifiers, callback) --- remove a value from a list-valued group profile property. usage: mixpanel.groups.remove('company', 'Acme Inc.', {'products': 'anvil'}); mixpanel.groups.remove('company', 'Acme Inc.', { 'products': 'anvil', 'customer segments': 'coyotes' }); */ remove(group_key, group_id, data, modifiers, callback) { const identifiers = { $group_key: group_key, $group_id: group_id }; this._remove({ identifiers, data, modifiers, callback }); } /** groups.union(group_key, group_id, data, modifiers, callback) --- merge value(s) into a list-valued group profile property. usage: mixpanel.groups.union('company', 'Acme Inc.', {'products': 'anvil'}); mixpanel.groups.union('company', 'Acme Inc.', {'products': ['anvil'], 'customer segments': ['coyotes']}); */ union(group_key, group_id, data, modifiers, callback) { const identifiers = { $group_key: group_key, $group_id: group_id }; this._union({ identifiers, data, modifiers, callback }); } /** groups.unset(group_key, group_id, prop, modifiers, callback) --- delete a property on a group profile usage: mixpanel.groups.unset('company', 'Acme Inc.', 'products'); mixpanel.groups.unset('company', 'Acme Inc.', ['products', 'customer segments']); */ unset(group_key, group_id, prop, modifiers, callback) { const identifiers = { $group_key: group_key, $group_id: group_id }; this._unset({ identifiers, prop, modifiers, callback }); } } exports.MixpanelGroups = MixpanelGroups;