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

chore: feature links flag (#9896)

This commit is contained in:
Mateusz Kwasniewski 2025-05-06 09:46:18 +02:00 committed by GitHub
parent 002233e7f6
commit 4860d73bf7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 2 deletions

View File

@ -12,6 +12,7 @@ import {
} from '../../openapi/util/standard-responses';
import { createRequestSchema } from '../../openapi/util/create-request-schema';
import type { IFeatureLink } from './feature-link-store-type';
import type { IFlagResolver } from '../../types';
interface FeatureLinkServices {
transactionalFeatureLinkService: WithTransactional<FeatureLinkService>;
@ -24,6 +25,7 @@ const PATH_LINK = '/:projectId/features/:featureName/link/:linkId';
export default class FeatureLinkController extends Controller {
private transactionalFeatureLinkService: WithTransactional<FeatureLinkService>;
private openApiService: OpenApiService;
private flagResolver: IFlagResolver;
constructor(
config: IUnleashConfig,
@ -35,6 +37,7 @@ export default class FeatureLinkController extends Controller {
super(config);
this.transactionalFeatureLinkService = transactionalFeatureLinkService;
this.openApiService = openApiService;
this.flagResolver = config.flagResolver;
this.route({
method: 'post',
@ -105,6 +108,9 @@ export default class FeatureLinkController extends Controller {
>,
res: Response,
): Promise<void> {
if (!this.flagResolver.isEnabled('featureLinks')) {
res.status(404).end();
}
const { projectId, featureName } = req.params;
await this.transactionalFeatureLinkService.transactional((service) =>
@ -126,6 +132,9 @@ export default class FeatureLinkController extends Controller {
>,
res: Response,
): Promise<void> {
if (!this.flagResolver.isEnabled('featureLinks')) {
res.status(404).end();
}
const { projectId, linkId, featureName } = req.params;
await this.transactionalFeatureLinkService.transactional((service) =>
@ -147,6 +156,9 @@ export default class FeatureLinkController extends Controller {
>,
res: Response,
): Promise<void> {
if (!this.flagResolver.isEnabled('featureLinks')) {
res.status(404).end();
}
const { projectId, linkId } = req.params;
await this.transactionalFeatureLinkService.transactional((service) =>

View File

@ -20,7 +20,9 @@ beforeAll(async () => {
db.stores,
{
experimental: {
flags: {},
flags: {
featureLinks: true,
},
},
},
db.rawDatabase,

View File

@ -69,7 +69,8 @@ export type IFlagKey =
| 'flagsReleaseManagementUI'
| 'cleanupReminder'
| 'removeInactiveApplications'
| 'registerFrontendClient';
| 'registerFrontendClient'
| 'featureLinks';
export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
@ -330,6 +331,10 @@ const flags: IFlags = {
process.env.UNLEASH_EXPERIMENTAL_REGISTER_FRONTEND_CLIENT,
false,
),
featureLinks: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_FEATURE_LINKS,
false,
),
};
export const defaultExperimentalOptions: IExperimentalOptions = {