56 lines
1.9 KiB
TypeScript
56 lines
1.9 KiB
TypeScript
import {
|
|
Event,
|
|
UserCreatedEvent,
|
|
UserUpdatedEvent,
|
|
UserDeletedEvent,
|
|
UserPermissionAssignedEvent,
|
|
UserPermissionRemovedEvent,
|
|
GroupCreatedEvent,
|
|
GroupUpdatedEvent,
|
|
GroupDeletedEvent,
|
|
GroupUsersAddedEvent,
|
|
GroupUsersDeletedEvent,
|
|
GroupPermissionsEditedEvent,
|
|
} from "@budibase/types"
|
|
|
|
const getEventProperties: Record<
|
|
string,
|
|
(properties: any) => string | undefined
|
|
> = {
|
|
[Event.USER_CREATED]: (properties: UserCreatedEvent) => properties.userId,
|
|
[Event.USER_UPDATED]: (properties: UserUpdatedEvent) => properties.userId,
|
|
[Event.USER_DELETED]: (properties: UserDeletedEvent) => properties.userId,
|
|
[Event.USER_PERMISSION_ADMIN_ASSIGNED]: (
|
|
properties: UserPermissionAssignedEvent
|
|
) => properties.userId,
|
|
[Event.USER_PERMISSION_ADMIN_REMOVED]: (
|
|
properties: UserPermissionRemovedEvent
|
|
) => properties.userId,
|
|
[Event.USER_PERMISSION_BUILDER_ASSIGNED]: (
|
|
properties: UserPermissionAssignedEvent
|
|
) => properties.userId,
|
|
[Event.USER_PERMISSION_BUILDER_REMOVED]: (
|
|
properties: UserPermissionRemovedEvent
|
|
) => properties.userId,
|
|
[Event.USER_GROUP_CREATED]: (properties: GroupCreatedEvent) =>
|
|
properties.groupId,
|
|
[Event.USER_GROUP_UPDATED]: (properties: GroupUpdatedEvent) =>
|
|
properties.groupId,
|
|
[Event.USER_GROUP_DELETED]: (properties: GroupDeletedEvent) =>
|
|
properties.groupId,
|
|
[Event.USER_GROUP_USERS_ADDED]: (properties: GroupUsersAddedEvent) =>
|
|
properties.groupId,
|
|
[Event.USER_GROUP_USERS_REMOVED]: (properties: GroupUsersDeletedEvent) =>
|
|
properties.groupId,
|
|
[Event.USER_GROUP_PERMISSIONS_EDITED]: (
|
|
properties: GroupPermissionsEditedEvent
|
|
) => properties.groupId,
|
|
}
|
|
|
|
export function getDocumentId(event: Event, properties: any) {
|
|
const extractor = getEventProperties[event]
|
|
if (!extractor) {
|
|
throw new Error("Event does not have a method of document ID extraction")
|
|
}
|
|
return extractor(properties)
|
|
}
|