feat(server): cluster level event system (#9884)

This commit is contained in:
forehalo
2025-01-25 14:51:03 +00:00
parent 0d2c2ea21e
commit 6370f45928
43 changed files with 634 additions and 364 deletions
+11 -18
View File
@@ -5,11 +5,10 @@ import { pick } from 'lodash-es';
import {
CryptoHelper,
EmailAlreadyUsed,
EventEmitter,
EventBus,
WrongSignInCredentials,
WrongSignInMethod,
} from '../base';
import type { Payload } from '../base/event/def';
import { Quota_FreePlanV1_1 } from '../core/quota/schema';
import { BaseModel } from './base';
import type { Workspace } from './workspace';
@@ -40,21 +39,15 @@ const defaultUserCreatingData = {
},
};
declare module '../base/event/def' {
interface UserEvents {
created: Payload<User>;
updated: Payload<User>;
deleted: Payload<
User & {
// TODO(@forehalo): unlink foreign key constraint on [WorkspaceUserPermission] to delegate
// dealing of owned workspaces of deleted users to workspace model
ownedWorkspaces: Workspace['id'][];
}
>;
}
interface EventDefinitions {
user: UserEvents;
declare global {
interface Events {
'user.created': User;
'user.updated': User;
'user.deleted': User & {
// TODO(@forehalo): unlink foreign key constraint on [WorkspaceUserPermission] to delegate
// dealing of owned workspaces of deleted users to workspace model
ownedWorkspaces: Workspace['id'][];
};
}
}
@@ -65,7 +58,7 @@ export type { User };
export class UserModel extends BaseModel {
constructor(
private readonly crypto: CryptoHelper,
private readonly event: EventEmitter
private readonly event: EventBus
) {
super();
}