1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-07-31 13:47:02 +02:00

chore: add application_created event type (#10351)

This is primarily to facilitate reading and processing these events in
the payg cloud section of Unleash. We only emit these in one place, so I
added the types in there.
This commit is contained in:
Thomas Heartman 2025-07-14 13:02:29 +02:00 committed by GitHub
parent ca485959b0
commit ed9eccd743
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 27 additions and 8 deletions

View File

@ -24,7 +24,11 @@ import type { IClientMetricsStoreV2 } from '../client-metrics/client-metrics-sto
import { clientMetricsSchema } from '../shared/schema.js';
import type { PartialSome } from '../../../types/partial.js';
import type { IPrivateProjectChecker } from '../../private-project/privateProjectCheckerType.js';
import { type IFlagResolver, SYSTEM_USER } from '../../../types/index.js';
import {
type ApplicationCreatedEvent,
type IFlagResolver,
SYSTEM_USER,
} from '../../../types/index.js';
import { ALL_PROJECTS, parseStrictSemVer } from '../../../util/index.js';
import type { Logger } from '../../../logger.js';
import { findOutdatedSDKs, isOutdatedSdk } from './findOutdatedSdks.js';
@ -148,13 +152,15 @@ export default class ClientInstanceService {
const appsToAnnounce =
await this.clientApplicationsStore.setUnannouncedToAnnounced();
if (appsToAnnounce.length > 0) {
const events = appsToAnnounce.map((app) => ({
type: APPLICATION_CREATED,
createdBy: app.createdBy || SYSTEM_USER.username!,
data: app,
createdByUserId: app.createdByUserId || SYSTEM_USER.id,
ip: '', // TODO: fix this, how do we get the ip from the client? This comes from a row in the DB
}));
const events: ApplicationCreatedEvent[] = appsToAnnounce.map(
(app) => ({
type: APPLICATION_CREATED,
createdBy: app.createdBy || SYSTEM_USER.username!,
data: app,
createdByUserId: app.createdByUserId || SYSTEM_USER.id,
ip: '', // TODO: fix this, how do we get the ip from the client? This comes from a row in the DB
}),
);
await this.eventStore.batchStore(events);
}
}

View File

@ -120,8 +120,10 @@ import {
FEATURE_LINK_REMOVED,
FEATURE_LINK_UPDATED,
FEATURE_LINK_ADDED,
APPLICATION_CREATED,
} from '../events/index.js';
import type { ITag } from '../tags/index.js';
import type { IClientApplication } from './stores/client-applications-store.js';
export class BaseEvent implements IBaseEvent {
readonly type: IEventType;
@ -1917,6 +1919,17 @@ export class ReleasePlanMilestoneStartedEvent extends BaseEvent {
}
}
export class ApplicationCreatedEvent extends BaseEvent {
readonly data: IClientApplication;
constructor(eventData: {
data: IClientApplication;
auditUser: IAuditUser;
}) {
super(APPLICATION_CREATED, eventData.auditUser);
this.data = eventData.data;
}
}
interface IUserEventData
extends Pick<
IUserWithRootRole,