Fix googleApisSetRequestExtraParams (#6455)
This commit is contained in:
@ -315,6 +315,7 @@ export type Mutation = {
|
|||||||
disablePostgresProxy: PostgresCredentials;
|
disablePostgresProxy: PostgresCredentials;
|
||||||
emailPasswordResetLink: EmailPasswordResetLink;
|
emailPasswordResetLink: EmailPasswordResetLink;
|
||||||
enablePostgresProxy: PostgresCredentials;
|
enablePostgresProxy: PostgresCredentials;
|
||||||
|
enableWorkflowTrigger: Scalars['Boolean'];
|
||||||
exchangeAuthorizationCode: ExchangeAuthCode;
|
exchangeAuthorizationCode: ExchangeAuthCode;
|
||||||
generateApiKeyToken: ApiKeyToken;
|
generateApiKeyToken: ApiKeyToken;
|
||||||
generateJWT: AuthTokens;
|
generateJWT: AuthTokens;
|
||||||
@ -377,6 +378,11 @@ export type MutationEmailPasswordResetLinkArgs = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export type MutationEnableWorkflowTriggerArgs = {
|
||||||
|
workflowVersionId: Scalars['String'];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
export type MutationExchangeAuthorizationCodeArgs = {
|
export type MutationExchangeAuthorizationCodeArgs = {
|
||||||
authorizationCode: Scalars['String'];
|
authorizationCode: Scalars['String'];
|
||||||
clientSecret?: InputMaybe<Scalars['String']>;
|
clientSecret?: InputMaybe<Scalars['String']>;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { DataSource } from 'typeorm';
|
import { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
|
|
||||||
const tableName = 'featureFlag';
|
const tableName = 'featureFlag';
|
||||||
|
|
||||||
@ -16,47 +16,47 @@ export const seedFeatureFlags = async (
|
|||||||
.orIgnore()
|
.orIgnore()
|
||||||
.values([
|
.values([
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsBlocklistEnabled,
|
key: FeatureFlagKey.IsBlocklistEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsAirtableIntegrationEnabled,
|
key: FeatureFlagKey.IsAirtableIntegrationEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsPostgreSQLIntegrationEnabled,
|
key: FeatureFlagKey.IsPostgreSQLIntegrationEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsEventObjectEnabled,
|
key: FeatureFlagKey.IsEventObjectEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: false,
|
value: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsStripeIntegrationEnabled,
|
key: FeatureFlagKey.IsStripeIntegrationEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsMessagingAliasFetchingEnabled,
|
key: FeatureFlagKey.IsMessagingAliasFetchingEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsGoogleCalendarSyncV2Enabled,
|
key: FeatureFlagKey.IsGoogleCalendarSyncV2Enabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsFunctionSettingsEnabled,
|
key: FeatureFlagKey.IsFunctionSettingsEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: FeatureFlagKeys.IsWorkflowEnabled,
|
key: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
workspaceId: workspaceId,
|
workspaceId: workspaceId,
|
||||||
value: false,
|
value: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,20 +1,18 @@
|
|||||||
import { Args, Query, Resolver, ArgsType, Field } from '@nestjs/graphql';
|
|
||||||
import { ForbiddenException, UseGuards } from '@nestjs/common';
|
import { ForbiddenException, UseGuards } from '@nestjs/common';
|
||||||
|
import { Args, ArgsType, Field, Query, Resolver } from '@nestjs/graphql';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
|
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
|
|
||||||
import { User } from 'src/engine/core-modules/user/user.entity';
|
|
||||||
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
|
|
||||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
|
||||||
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
|
|
||||||
import {
|
|
||||||
FeatureFlagEntity,
|
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
|
|
||||||
import { AISQLQueryResult } from 'src/engine/core-modules/ai-sql-query/dtos/ai-sql-query-result.dto';
|
|
||||||
import { AISQLQueryService } from 'src/engine/core-modules/ai-sql-query/ai-sql-query.service';
|
import { AISQLQueryService } from 'src/engine/core-modules/ai-sql-query/ai-sql-query.service';
|
||||||
|
import { AISQLQueryResult } from 'src/engine/core-modules/ai-sql-query/dtos/ai-sql-query-result.dto';
|
||||||
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
|
import { User } from 'src/engine/core-modules/user/user.entity';
|
||||||
|
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||||
|
import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator';
|
||||||
|
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
|
||||||
|
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
|
||||||
|
|
||||||
@ArgsType()
|
@ArgsType()
|
||||||
class GetAISQLQueryArgs {
|
class GetAISQLQueryArgs {
|
||||||
@ -40,13 +38,13 @@ export class AISQLQueryResolver {
|
|||||||
const isCopilotEnabledFeatureFlag =
|
const isCopilotEnabledFeatureFlag =
|
||||||
await this.featureFlagRepository.findOneBy({
|
await this.featureFlagRepository.findOneBy({
|
||||||
workspaceId,
|
workspaceId,
|
||||||
key: FeatureFlagKeys.IsCopilotEnabled,
|
key: FeatureFlagKey.IsCopilotEnabled,
|
||||||
value: true,
|
value: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!isCopilotEnabledFeatureFlag?.value) {
|
if (!isCopilotEnabledFeatureFlag?.value) {
|
||||||
throw new ForbiddenException(
|
throw new ForbiddenException(
|
||||||
`${FeatureFlagKeys.IsCopilotEnabled} feature flag is disabled`,
|
`${FeatureFlagKey.IsCopilotEnabled} feature flag is disabled`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,12 +13,10 @@ import {
|
|||||||
GoogleAPIScopeConfig,
|
GoogleAPIScopeConfig,
|
||||||
GoogleAPIsOauthExchangeCodeForTokenStrategy,
|
GoogleAPIsOauthExchangeCodeForTokenStrategy,
|
||||||
} from 'src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy';
|
} from 'src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy';
|
||||||
import {
|
|
||||||
FeatureFlagEntity,
|
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
|
||||||
import { setRequestExtraParams } from 'src/engine/core-modules/auth/utils/google-apis-set-request-extra-params.util';
|
import { setRequestExtraParams } from 'src/engine/core-modules/auth/utils/google-apis-set-request-extra-params.util';
|
||||||
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
|
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class GoogleAPIsOauthExchangeCodeForTokenGuard extends AuthGuard(
|
export class GoogleAPIsOauthExchangeCodeForTokenGuard extends AuthGuard(
|
||||||
@ -52,7 +50,7 @@ export class GoogleAPIsOauthExchangeCodeForTokenGuard extends AuthGuard(
|
|||||||
isMessagingAliasFetchingEnabled:
|
isMessagingAliasFetchingEnabled:
|
||||||
!!(await this.featureFlagRepository.findOneBy({
|
!!(await this.featureFlagRepository.findOneBy({
|
||||||
workspaceId,
|
workspaceId,
|
||||||
key: FeatureFlagKeys.IsMessagingAliasFetchingEnabled,
|
key: FeatureFlagKey.IsMessagingAliasFetchingEnabled,
|
||||||
value: true,
|
value: true,
|
||||||
})),
|
})),
|
||||||
};
|
};
|
||||||
|
|||||||
@ -10,13 +10,11 @@ import { Repository } from 'typeorm';
|
|||||||
|
|
||||||
import { TokenService } from 'src/engine/core-modules/auth/services/token.service';
|
import { TokenService } from 'src/engine/core-modules/auth/services/token.service';
|
||||||
import { GoogleAPIScopeConfig } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy';
|
import { GoogleAPIScopeConfig } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-exchange-code-for-token.auth.strategy';
|
||||||
import {
|
|
||||||
FeatureFlagEntity,
|
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
|
||||||
import { GoogleAPIsOauthRequestCodeStrategy } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy';
|
import { GoogleAPIsOauthRequestCodeStrategy } from 'src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy';
|
||||||
import { setRequestExtraParams } from 'src/engine/core-modules/auth/utils/google-apis-set-request-extra-params.util';
|
import { setRequestExtraParams } from 'src/engine/core-modules/auth/utils/google-apis-set-request-extra-params.util';
|
||||||
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
|
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class GoogleAPIsOauthRequestCodeGuard extends AuthGuard('google-apis') {
|
export class GoogleAPIsOauthRequestCodeGuard extends AuthGuard('google-apis') {
|
||||||
@ -49,7 +47,7 @@ export class GoogleAPIsOauthRequestCodeGuard extends AuthGuard('google-apis') {
|
|||||||
isMessagingAliasFetchingEnabled:
|
isMessagingAliasFetchingEnabled:
|
||||||
!!(await this.featureFlagRepository.findOneBy({
|
!!(await this.featureFlagRepository.findOneBy({
|
||||||
workspaceId,
|
workspaceId,
|
||||||
key: FeatureFlagKeys.IsMessagingAliasFetchingEnabled,
|
key: FeatureFlagKey.IsMessagingAliasFetchingEnabled,
|
||||||
value: true,
|
value: true,
|
||||||
})),
|
})),
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,16 +3,14 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||||||
|
|
||||||
import { In, Repository } from 'typeorm';
|
import { In, Repository } from 'typeorm';
|
||||||
|
|
||||||
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
|
||||||
import {
|
import {
|
||||||
BillingSubscription,
|
BillingSubscription,
|
||||||
SubscriptionStatus,
|
SubscriptionStatus,
|
||||||
} from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
|
} from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
|
||||||
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||||
import {
|
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
||||||
FeatureFlagEntity,
|
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class BillingService {
|
export class BillingService {
|
||||||
@ -47,7 +45,7 @@ export class BillingService {
|
|||||||
|
|
||||||
const freeAccessFeatureFlags = await this.featureFlagRepository.find({
|
const freeAccessFeatureFlags = await this.featureFlagRepository.find({
|
||||||
where: {
|
where: {
|
||||||
key: FeatureFlagKeys.IsFreeAccessEnabled,
|
key: FeatureFlagKey.IsFreeAccessEnabled,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
select: ['workspaceId'],
|
select: ['workspaceId'],
|
||||||
|
|||||||
@ -13,10 +13,8 @@ import {
|
|||||||
SubscriptionStatus,
|
SubscriptionStatus,
|
||||||
} from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
|
} from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
|
||||||
import { StripeService } from 'src/engine/core-modules/billing/stripe/stripe.service';
|
import { StripeService } from 'src/engine/core-modules/billing/stripe/stripe.service';
|
||||||
import {
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
FeatureFlagEntity,
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service';
|
import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service';
|
||||||
import { User } from 'src/engine/core-modules/user/user.entity';
|
import { User } from 'src/engine/core-modules/user/user.entity';
|
||||||
import {
|
import {
|
||||||
@ -57,7 +55,7 @@ export class BillingWorkspaceService {
|
|||||||
async isBillingEnabledForWorkspace(workspaceId: string) {
|
async isBillingEnabledForWorkspace(workspaceId: string) {
|
||||||
const isFreeAccessEnabled = await this.featureFlagRepository.findOneBy({
|
const isFreeAccessEnabled = await this.featureFlagRepository.findOneBy({
|
||||||
workspaceId,
|
workspaceId,
|
||||||
key: FeatureFlagKeys.IsFreeAccessEnabled,
|
key: FeatureFlagKey.IsFreeAccessEnabled,
|
||||||
value: true,
|
value: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -330,7 +328,7 @@ export class BillingWorkspaceService {
|
|||||||
|
|
||||||
await this.featureFlagRepository.delete({
|
await this.featureFlagRepository.delete({
|
||||||
workspaceId,
|
workspaceId,
|
||||||
key: FeatureFlagKeys.IsFreeAccessEnabled,
|
key: FeatureFlagKey.IsFreeAccessEnabled,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
export enum FeatureFlagKey {
|
||||||
|
IsBlocklistEnabled = 'IS_BLOCKLIST_ENABLED',
|
||||||
|
IsEventObjectEnabled = 'IS_EVENT_OBJECT_ENABLED',
|
||||||
|
IsAirtableIntegrationEnabled = 'IS_AIRTABLE_INTEGRATION_ENABLED',
|
||||||
|
IsPostgreSQLIntegrationEnabled = 'IS_POSTGRESQL_INTEGRATION_ENABLED',
|
||||||
|
IsStripeIntegrationEnabled = 'IS_STRIPE_INTEGRATION_ENABLED',
|
||||||
|
IsCopilotEnabled = 'IS_COPILOT_ENABLED',
|
||||||
|
IsMessagingAliasFetchingEnabled = 'IS_MESSAGING_ALIAS_FETCHING_ENABLED',
|
||||||
|
IsGoogleCalendarSyncV2Enabled = 'IS_GOOGLE_CALENDAR_SYNC_V2_ENABLED',
|
||||||
|
IsFreeAccessEnabled = 'IS_FREE_ACCESS_ENABLED',
|
||||||
|
IsFunctionSettingsEnabled = 'IS_FUNCTION_SETTINGS_ENABLED',
|
||||||
|
IsWorkflowEnabled = 'IS_WORKFLOW_ENABLED',
|
||||||
|
}
|
||||||
@ -13,22 +13,9 @@ import {
|
|||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
|
|
||||||
import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars';
|
import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars';
|
||||||
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||||
|
|
||||||
export enum FeatureFlagKeys {
|
|
||||||
IsBlocklistEnabled = 'IS_BLOCKLIST_ENABLED',
|
|
||||||
IsEventObjectEnabled = 'IS_EVENT_OBJECT_ENABLED',
|
|
||||||
IsAirtableIntegrationEnabled = 'IS_AIRTABLE_INTEGRATION_ENABLED',
|
|
||||||
IsPostgreSQLIntegrationEnabled = 'IS_POSTGRESQL_INTEGRATION_ENABLED',
|
|
||||||
IsStripeIntegrationEnabled = 'IS_STRIPE_INTEGRATION_ENABLED',
|
|
||||||
IsCopilotEnabled = 'IS_COPILOT_ENABLED',
|
|
||||||
IsMessagingAliasFetchingEnabled = 'IS_MESSAGING_ALIAS_FETCHING_ENABLED',
|
|
||||||
IsGoogleCalendarSyncV2Enabled = 'IS_GOOGLE_CALENDAR_SYNC_V2_ENABLED',
|
|
||||||
IsFreeAccessEnabled = 'IS_FREE_ACCESS_ENABLED',
|
|
||||||
IsFunctionSettingsEnabled = 'IS_FUNCTION_SETTINGS_ENABLED',
|
|
||||||
IsWorkflowEnabled = 'IS_WORKFLOW_ENABLED',
|
|
||||||
}
|
|
||||||
|
|
||||||
@Entity({ name: 'featureFlag', schema: 'core' })
|
@Entity({ name: 'featureFlag', schema: 'core' })
|
||||||
@ObjectType('FeatureFlag')
|
@ObjectType('FeatureFlag')
|
||||||
@Unique('IndexOnKeyAndWorkspaceIdUnique', ['key', 'workspaceId'])
|
@Unique('IndexOnKeyAndWorkspaceIdUnique', ['key', 'workspaceId'])
|
||||||
@ -37,9 +24,9 @@ export class FeatureFlagEntity {
|
|||||||
@PrimaryGeneratedColumn('uuid')
|
@PrimaryGeneratedColumn('uuid')
|
||||||
id: string;
|
id: string;
|
||||||
|
|
||||||
@Field()
|
@Field(() => String)
|
||||||
@Column({ nullable: false, type: 'text' })
|
@Column({ nullable: false, type: 'text' })
|
||||||
key: FeatureFlagKeys;
|
key: FeatureFlagKey;
|
||||||
|
|
||||||
@Field()
|
@Field()
|
||||||
@Column({ nullable: false, type: 'uuid' })
|
@Column({ nullable: false, type: 'uuid' })
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
|
|
||||||
export type FeatureFlagMap = Record<`${FeatureFlagKeys}`, boolean>;
|
export type FeatureFlagMap = Record<`${FeatureFlagKey}`, boolean>;
|
||||||
|
|||||||
@ -3,10 +3,8 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||||||
|
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
|
|
||||||
import {
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
FeatureFlagEntity,
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class IsFeatureEnabledService {
|
export class IsFeatureEnabledService {
|
||||||
@ -16,7 +14,7 @@ export class IsFeatureEnabledService {
|
|||||||
) {}
|
) {}
|
||||||
|
|
||||||
public async isFeatureEnabled(
|
public async isFeatureEnabled(
|
||||||
key: FeatureFlagKeys,
|
key: FeatureFlagKey,
|
||||||
workspaceId: string,
|
workspaceId: string,
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
const featureFlag = await this.featureFlagRepository.findOneBy({
|
const featureFlag = await this.featureFlagRepository.findOneBy({
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
|
|
||||||
import {
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
FeatureFlagEntity,
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
import { RemoteServerType } from 'src/engine/metadata-modules/remote-server/remote-server.entity';
|
import { RemoteServerType } from 'src/engine/metadata-modules/remote-server/remote-server.entity';
|
||||||
import {
|
import {
|
||||||
RemoteServerException,
|
RemoteServerException,
|
||||||
@ -36,9 +34,9 @@ export const validateRemoteServerType = async (
|
|||||||
const getFeatureFlagKey = (remoteServerType: RemoteServerType) => {
|
const getFeatureFlagKey = (remoteServerType: RemoteServerType) => {
|
||||||
switch (remoteServerType) {
|
switch (remoteServerType) {
|
||||||
case RemoteServerType.POSTGRES_FDW:
|
case RemoteServerType.POSTGRES_FDW:
|
||||||
return FeatureFlagKeys.IsPostgreSQLIntegrationEnabled;
|
return FeatureFlagKey.IsPostgreSQLIntegrationEnabled;
|
||||||
case RemoteServerType.STRIPE_FDW:
|
case RemoteServerType.STRIPE_FDW:
|
||||||
return FeatureFlagKeys.IsStripeIntegrationEnabled;
|
return FeatureFlagKey.IsStripeIntegrationEnabled;
|
||||||
default:
|
default:
|
||||||
throw new RemoteServerException(
|
throw new RemoteServerException(
|
||||||
`Type ${remoteServerType} is not supported.`,
|
`Type ${remoteServerType} is not supported.`,
|
||||||
|
|||||||
@ -5,26 +5,24 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||||||
import { FileUpload, GraphQLUpload } from 'graphql-upload';
|
import { FileUpload, GraphQLUpload } from 'graphql-upload';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
|
|
||||||
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { ServerlessFunctionService } from 'src/engine/metadata-modules/serverless-function/serverless-function.service';
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
import { ExecuteServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/execute-serverless-function.input';
|
|
||||||
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
|
|
||||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||||
import { ServerlessFunctionDto } from 'src/engine/metadata-modules/serverless-function/dtos/serverless-function.dto';
|
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
|
||||||
import { ServerlessFunctionExecutionResultDto } from 'src/engine/metadata-modules/serverless-function/dtos/serverless-function-execution-result.dto';
|
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
|
||||||
import { serverlessFunctionGraphQLApiExceptionHandler } from 'src/engine/metadata-modules/serverless-function/utils/serverless-function-graphql-api-exception-handler.utils';
|
|
||||||
import { CreateServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/create-serverless-function.input';
|
|
||||||
import { CreateServerlessFunctionFromFileInput } from 'src/engine/metadata-modules/serverless-function/dtos/create-serverless-function-from-file.input';
|
import { CreateServerlessFunctionFromFileInput } from 'src/engine/metadata-modules/serverless-function/dtos/create-serverless-function-from-file.input';
|
||||||
import { UpdateServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/update-serverless-function.input';
|
import { CreateServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/create-serverless-function.input';
|
||||||
import { DeleteServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/delete-serverless-function.input';
|
import { DeleteServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/delete-serverless-function.input';
|
||||||
import {
|
import { ExecuteServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/execute-serverless-function.input';
|
||||||
FeatureFlagEntity,
|
import { ServerlessFunctionExecutionResultDto } from 'src/engine/metadata-modules/serverless-function/dtos/serverless-function-execution-result.dto';
|
||||||
FeatureFlagKeys,
|
import { ServerlessFunctionDto } from 'src/engine/metadata-modules/serverless-function/dtos/serverless-function.dto';
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { UpdateServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/update-serverless-function.input';
|
||||||
import {
|
import {
|
||||||
ServerlessFunctionException,
|
ServerlessFunctionException,
|
||||||
ServerlessFunctionExceptionCode,
|
ServerlessFunctionExceptionCode,
|
||||||
} from 'src/engine/metadata-modules/serverless-function/serverless-function.exception';
|
} from 'src/engine/metadata-modules/serverless-function/serverless-function.exception';
|
||||||
|
import { ServerlessFunctionService } from 'src/engine/metadata-modules/serverless-function/serverless-function.service';
|
||||||
|
import { serverlessFunctionGraphQLApiExceptionHandler } from 'src/engine/metadata-modules/serverless-function/utils/serverless-function-graphql-api-exception-handler.utils';
|
||||||
|
|
||||||
@UseGuards(JwtAuthGuard)
|
@UseGuards(JwtAuthGuard)
|
||||||
@Resolver()
|
@Resolver()
|
||||||
@ -39,7 +37,7 @@ export class ServerlessFunctionResolver {
|
|||||||
const isFunctionSettingsEnabled =
|
const isFunctionSettingsEnabled =
|
||||||
await this.featureFlagRepository.findOneBy({
|
await this.featureFlagRepository.findOneBy({
|
||||||
workspaceId,
|
workspaceId,
|
||||||
key: FeatureFlagKeys.IsFunctionSettingsEnabled,
|
key: FeatureFlagKey.IsFunctionSettingsEnabled,
|
||||||
value: true,
|
value: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -7,10 +7,8 @@ import {
|
|||||||
BillingSubscription,
|
BillingSubscription,
|
||||||
SubscriptionStatus,
|
SubscriptionStatus,
|
||||||
} from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
|
} from 'src/engine/core-modules/billing/entities/billing-subscription.entity';
|
||||||
import {
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
FeatureFlagEntity,
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
FeatureFlagKeys,
|
|
||||||
} from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
|
||||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||||
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
import { EnvironmentService } from 'src/engine/integrations/environment/environment.service';
|
||||||
|
|
||||||
@ -55,7 +53,7 @@ export class WorkspaceStatusService {
|
|||||||
await this.featureFlagRepository.find({
|
await this.featureFlagRepository.find({
|
||||||
where: {
|
where: {
|
||||||
workspaceId: Any(workspaceIds),
|
workspaceId: Any(workspaceIds),
|
||||||
key: FeatureFlagKeys.IsFreeAccessEnabled,
|
key: FeatureFlagKey.IsFreeAccessEnabled,
|
||||||
value: true,
|
value: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
||||||
@ -99,14 +99,14 @@ export class ActivityTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideFieldKey: 'activityTargets',
|
inverseSideFieldKey: 'activityTargets',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflow')
|
@WorkspaceJoinColumn('workflow')
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
workflowId: string | null;
|
workflowId: string | null;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
@ -147,13 +147,13 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
})
|
})
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflow')
|
@WorkspaceJoinColumn('workflow')
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
workflowId: string | null;
|
workflowId: string | null;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
@ -113,14 +113,14 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideFieldKey: 'favorites',
|
inverseSideFieldKey: 'favorites',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflow')
|
@WorkspaceJoinColumn('workflow')
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
workflowId: string;
|
workflowId: string;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { IsFeatureEnabledService } from 'src/engine/core-modules/feature-flag/services/is-feature-enabled.service';
|
import { IsFeatureEnabledService } from 'src/engine/core-modules/feature-flag/services/is-feature-enabled.service';
|
||||||
import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
|
import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service';
|
||||||
import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
|
import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator';
|
||||||
@ -108,7 +108,7 @@ export class MessagingMessagesImportService {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
await this.isFeatureEnabledService.isFeatureEnabled(
|
await this.isFeatureEnabledService.isFeatureEnabled(
|
||||||
FeatureFlagKeys.IsMessagingAliasFetchingEnabled,
|
FeatureFlagKey.IsMessagingAliasFetchingEnabled,
|
||||||
workspaceId,
|
workspaceId,
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
|
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||||
import { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.decorator';
|
import { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.decorator';
|
||||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
|
||||||
import { BEHAVIORAL_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { BEHAVIORAL_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
|
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync
|
|||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsEventObjectEnabled,
|
featureFlag: FeatureFlagKey.IsEventObjectEnabled,
|
||||||
})
|
})
|
||||||
export class BehavioralEventWorkspaceEntity extends BaseWorkspaceEntity {
|
export class BehavioralEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
@ -163,14 +163,14 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideFieldKey: 'timelineActivities',
|
inverseSideFieldKey: 'timelineActivities',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflow')
|
@WorkspaceJoinColumn('workflow')
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
workflowId: string | null;
|
workflowId: string | null;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
@ -25,7 +25,7 @@ import { WorkflowWorkspaceEntity } from 'src/modules/workflow/standard-objects/w
|
|||||||
WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS.eventName,
|
WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS.eventName,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
export class WorkflowEventListenerWorkspaceEntity extends BaseWorkspaceEntity {
|
export class WorkflowEventListenerWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
@ -39,7 +39,7 @@ export type WorkflowTrigger = WorkflowDatabaseEventTrigger;
|
|||||||
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
import { FeatureFlagKeys } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
import {
|
import {
|
||||||
RelationMetadataType,
|
RelationMetadataType,
|
||||||
@ -32,7 +32,7 @@ import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/standard-ob
|
|||||||
labelIdentifierStandardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKeys.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
})
|
})
|
||||||
export class WorkflowWorkspaceEntity extends BaseWorkspaceEntity {
|
export class WorkflowWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
|
|||||||
Reference in New Issue
Block a user