1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-19 17:52:45 +02:00
unleash.unleash/src/lib/segments/segment-service-interface.ts
Nuno Góis 27d48b3437
Feat segments project safeguards (#3359)
https://linear.app/unleash/issue/2-811/ability-to-move-project-specific-segments


![image](https://user-images.githubusercontent.com/14320932/226572047-19ed225c-13d5-4f2e-b10f-e17a7f7e6ae7.png)

Provides some safeguards to project-specific segments when managing them
on a global level (segments page):
- You can always promote a segment to global;
- You can't specify a project if the segment is currently in use in
multiple projects;
- You can't specify a different project if the segment is currently
already in use in a project;
2023-03-21 20:28:43 +00:00

38 lines
941 B
TypeScript

import { UpsertSegmentSchema } from 'lib/openapi';
import { ISegment, IUser } from 'lib/types';
export interface ISegmentService {
updateStrategySegments: (
strategyId: string,
segmentIds: number[],
) => Promise<void>;
addToStrategy(id: number, strategyId: string): Promise<void>;
getByStrategy(strategyId: string): Promise<ISegment[]>;
get(id: number): Promise<ISegment>;
getActive(): Promise<ISegment[]>;
getAll(): Promise<ISegment[]>;
create(
data: UpsertSegmentSchema,
user: Partial<Pick<IUser, 'username' | 'email'>>,
): Promise<ISegment>;
update(
id: number,
data: UpsertSegmentSchema,
user: Partial<Pick<IUser, 'username' | 'email'>>,
): Promise<void>;
delete(id: number, user: IUser): Promise<void>;
cloneStrategySegments(
sourceStrategyId: string,
targetStrategyId: string,
): Promise<void>;
}