1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-04 00:18:01 +01:00

feat: export transactional user subscriptions service (#8651)

This commit is contained in:
Mateusz Kwasniewski 2024-11-05 11:52:15 +01:00 committed by GitHub
parent 1cedc374c1
commit b5a2befec7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 22 additions and 8 deletions

View File

@ -12,3 +12,4 @@ export * from './instance-stats/createInstanceStatsService';
export * from './feature-lifecycle/createFeatureLifecycle'; export * from './feature-lifecycle/createFeatureLifecycle';
export * from './playground/createPlaygroundService'; export * from './playground/createPlaygroundService';
export * from './personal-dashboard/createPersonalDashboardService'; export * from './personal-dashboard/createPersonalDashboardService';
export * from './user-subscriptions/createUserSubscriptionsService';

View File

@ -1,5 +1,5 @@
import type { Db, IUnleashConfig } from '../../server-impl'; import type { Db, IUnleashConfig } from '../../server-impl';
import UserSubscriptionService from './user-subscriptions-service'; import { UserSubscriptionsService } from './user-subscriptions-service';
import { UserUnsubscribeStore } from './user-unsubscribe-store'; import { UserUnsubscribeStore } from './user-unsubscribe-store';
import { import {
createEventsService, createEventsService,
@ -9,11 +9,11 @@ import { FakeUserUnsubscribeStore } from './fake-user-unsubscribe-store';
export const createUserSubscriptionsService = export const createUserSubscriptionsService =
(config: IUnleashConfig) => (config: IUnleashConfig) =>
(db: Db): UserSubscriptionService => { (db: Db): UserSubscriptionsService => {
const userUnsubscribeStore = new UserUnsubscribeStore(db); const userUnsubscribeStore = new UserUnsubscribeStore(db);
const eventService = createEventsService(db, config); const eventService = createEventsService(db, config);
const userSubscriptionsService = new UserSubscriptionService( const userSubscriptionsService = new UserSubscriptionsService(
{ userUnsubscribeStore }, { userUnsubscribeStore },
config, config,
eventService, eventService,
@ -22,11 +22,13 @@ export const createUserSubscriptionsService =
return userSubscriptionsService; return userSubscriptionsService;
}; };
export const createFakeUserSubscriptionsService = (config: IUnleashConfig) => { export const createFakeUserSubscriptionsService = (
config: IUnleashConfig,
): UserSubscriptionsService => {
const userUnsubscribeStore = new FakeUserUnsubscribeStore(); const userUnsubscribeStore = new FakeUserUnsubscribeStore();
const eventService = createFakeEventsService(config); const eventService = createFakeEventsService(config);
const userSubscriptionsService = new UserSubscriptionService( const userSubscriptionsService = new UserSubscriptionsService(
{ userUnsubscribeStore }, { userUnsubscribeStore },
config, config,
eventService, eventService,

View File

@ -4,7 +4,7 @@ import {
type IUser, type IUser,
TEST_AUDIT_USER, TEST_AUDIT_USER,
} from '../../types'; } from '../../types';
import type UserSubscriptionService from './user-subscriptions-service'; import type { UserSubscriptionsService } from './user-subscriptions-service';
import dbInit, { type ITestDb } from '../../../test/e2e/helpers/database-init'; import dbInit, { type ITestDb } from '../../../test/e2e/helpers/database-init';
import { createTestConfig } from '../../../test/config/test-config'; import { createTestConfig } from '../../../test/config/test-config';
import getLogger from '../../../test/fixtures/no-logger'; import getLogger from '../../../test/fixtures/no-logger';
@ -13,7 +13,7 @@ import type { IUserSubscriptionsReadModel } from './user-subscriptions-read-mode
let stores: IUnleashStores; let stores: IUnleashStores;
let db: ITestDb; let db: ITestDb;
let userSubscriptionService: UserSubscriptionService; let userSubscriptionService: UserSubscriptionsService;
let userSubscriptionsReadModel: IUserSubscriptionsReadModel; let userSubscriptionsReadModel: IUserSubscriptionsReadModel;
let config: IUnleashConfig; let config: IUnleashConfig;
let user: IUser; let user: IUser;

View File

@ -7,7 +7,7 @@ import type {
} from './user-unsubscribe-store-type'; } from './user-unsubscribe-store-type';
import type EventService from '../events/event-service'; import type EventService from '../events/event-service';
export default class UserSubscriptionService { export class UserSubscriptionsService {
private userUnsubscribeStore: IUserUnsubscribeStore; private userUnsubscribeStore: IUserUnsubscribeStore;
private eventService: EventService; private eventService: EventService;

View File

@ -70,9 +70,11 @@ import {
createFakeEnvironmentService, createFakeEnvironmentService,
createFakeEventsService, createFakeEventsService,
createFakeProjectService, createFakeProjectService,
createFakeUserSubscriptionsService,
createFeatureLifecycleService, createFeatureLifecycleService,
createFeatureToggleService, createFeatureToggleService,
createProjectService, createProjectService,
createUserSubscriptionsService,
} from '../features'; } from '../features';
import EventAnnouncerService from './event-announcer-service'; import EventAnnouncerService from './event-announcer-service';
import { createGroupService } from '../features/group/createGroupService'; import { createGroupService } from '../features/group/createGroupService';
@ -127,6 +129,7 @@ import {
createProjectInsightsService, createProjectInsightsService,
} from '../features/project-insights/createProjectInsightsService'; } from '../features/project-insights/createProjectInsightsService';
import { JobService } from '../features/scheduler/job-service'; import { JobService } from '../features/scheduler/job-service';
import { UserSubscriptionsService } from '../features/user-subscriptions/user-subscriptions-service';
import { JobStore } from '../features/scheduler/job-store'; import { JobStore } from '../features/scheduler/job-store';
import { FeatureLifecycleService } from '../features/feature-lifecycle/feature-lifecycle-service'; import { FeatureLifecycleService } from '../features/feature-lifecycle/feature-lifecycle-service';
import { createFakeFeatureLifecycleService } from '../features/feature-lifecycle/createFeatureLifecycle'; import { createFakeFeatureLifecycleService } from '../features/feature-lifecycle/createFeatureLifecycle';
@ -426,6 +429,10 @@ export const createServices = (
? createPersonalDashboardService(db, config, stores) ? createPersonalDashboardService(db, config, stores)
: createFakePersonalDashboardService(config); : createFakePersonalDashboardService(config);
const transactionalUserSubscriptionsService = db
? withTransactional(createUserSubscriptionsService(config), db)
: withFakeTransactional(createFakeUserSubscriptionsService(config));
return { return {
transactionalAccessService, transactionalAccessService,
accessService, accessService,
@ -492,6 +499,7 @@ export const createServices = (
onboardingService, onboardingService,
personalDashboardService, personalDashboardService,
projectStatusService, projectStatusService,
transactionalUserSubscriptionsService,
}; };
}; };
@ -544,4 +552,5 @@ export {
OnboardingService, OnboardingService,
PersonalDashboardService, PersonalDashboardService,
ProjectStatusService, ProjectStatusService,
UserSubscriptionsService,
}; };

View File

@ -58,6 +58,7 @@ import type { IntegrationEventsService } from '../features/integration-events/in
import type { OnboardingService } from '../features/onboarding/onboarding-service'; import type { OnboardingService } from '../features/onboarding/onboarding-service';
import type { PersonalDashboardService } from '../features/personal-dashboard/personal-dashboard-service'; import type { PersonalDashboardService } from '../features/personal-dashboard/personal-dashboard-service';
import type { ProjectStatusService } from '../features/project-status/project-status-service'; import type { ProjectStatusService } from '../features/project-status/project-status-service';
import type { UserSubscriptionsService } from '../features/user-subscriptions/user-subscriptions-service';
export interface IUnleashServices { export interface IUnleashServices {
transactionalAccessService: WithTransactional<AccessService>; transactionalAccessService: WithTransactional<AccessService>;
@ -128,4 +129,5 @@ export interface IUnleashServices {
onboardingService: OnboardingService; onboardingService: OnboardingService;
personalDashboardService: PersonalDashboardService; personalDashboardService: PersonalDashboardService;
projectStatusService: ProjectStatusService; projectStatusService: ProjectStatusService;
transactionalUserSubscriptionsService: WithTransactional<UserSubscriptionsService>;
} }