feat(server): events system (#5145)

This commit is contained in:
liuyi
2023-12-06 08:35:45 +00:00
parent b32a427ecd
commit 4cb26cd3e5
5 changed files with 113 additions and 6 deletions
@@ -0,0 +1,28 @@
import type { Snapshot, User, Workspace } from '@prisma/client';
import { ChangePayload, Flatten, Payload } from './types';
interface EventDefinitions {
user: {
created: Payload<User>;
updated: Payload<ChangePayload<User>>;
deleted: Payload<User['id']>;
};
workspace: {
created: Payload<Workspace>;
updated: Payload<ChangePayload<Workspace>>;
deleted: Payload<Workspace['id']>;
};
snapshot: {
created: Payload<Snapshot>;
updated: Payload<ChangePayload<Snapshot>>;
deleted: Payload<Pick<Snapshot, 'id' | 'workspaceId'>>;
};
}
export type EventKV = Flatten<EventDefinitions>;
export type Event = keyof EventKV;
export type EventPayload<E extends Event> = EventKV[E];