Add isInactive to FieldMetadata decorator (#6623)
This PR was created by [GitStart](https://gitstart.com/) to address the requirements from this ticket: [TWNTY-4145](https://clients.gitstart.com/twenty/5449/tickets/TWNTY-4145). This ticket was imported from: [TWNTY-4145](https://github.com/twentyhq/twenty/issues/4145) --- ### Description This PR introduces the @isInActive() decorator to the standard field metadata. \ - This gives the ability to allow workspaces to be able to be created with standard fields as inactive *Helps prevent polluting existing workspaces - A new standard field can be added to* eg company-workspace-entity.ts and the @WorkspaceIsInActive() decorator can be added to create it in deactivated mode sync-metadata command: `yarn command:prod workspace:sync-metadata -f` ### Refs #4145 ### Demo <https://www.loom.com/share/10c13e2614d749809cfe2d2d847e963e?sid=017bbfcf-53c6-4205-8ffc-8a09c416220a>\ <https://www.loom.com/share/6ab86bd36f344c999cb8dacdb82c7bb0?sid=13ac78a2-de44-4772-bb54-7b57975e7360>\ Fixes: #4145 --------- Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com> Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
committed by
GitHub
parent
1eeeae8564
commit
7ca091faa5
@ -19,6 +19,7 @@ export interface WorkspaceFieldOptions<
|
|||||||
defaultValue?: FieldMetadataDefaultValue<T>;
|
defaultValue?: FieldMetadataDefaultValue<T>;
|
||||||
options?: FieldMetadataOptions<T>;
|
options?: FieldMetadataOptions<T>;
|
||||||
settings?: FieldMetadataSettings<T>;
|
settings?: FieldMetadataSettings<T>;
|
||||||
|
isActive?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function WorkspaceField<T extends FieldMetadataType>(
|
export function WorkspaceField<T extends FieldMetadataType>(
|
||||||
@ -75,6 +76,7 @@ export function WorkspaceField<T extends FieldMetadataType>(
|
|||||||
isSystem,
|
isSystem,
|
||||||
gate,
|
gate,
|
||||||
isDeprecated,
|
isDeprecated,
|
||||||
|
isActive: options.isActive,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,4 +78,9 @@ export interface WorkspaceFieldMetadataArgs {
|
|||||||
* Is deprecated field.
|
* Is deprecated field.
|
||||||
*/
|
*/
|
||||||
readonly isDeprecated?: boolean;
|
readonly isDeprecated?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is active field.
|
||||||
|
*/
|
||||||
|
readonly isActive?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,4 +81,9 @@ export interface WorkspaceRelationMetadataArgs {
|
|||||||
* Field gate.
|
* Field gate.
|
||||||
*/
|
*/
|
||||||
readonly gate?: Gate;
|
readonly gate?: Gate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is active field.
|
||||||
|
*/
|
||||||
|
readonly isActive?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -172,6 +172,7 @@ export class StandardFieldFactory {
|
|||||||
isNullable: workspaceFieldMetadataArgs.isNullable,
|
isNullable: workspaceFieldMetadataArgs.isNullable,
|
||||||
isCustom: workspaceFieldMetadataArgs.isDeprecated ? true : false,
|
isCustom: workspaceFieldMetadataArgs.isDeprecated ? true : false,
|
||||||
isSystem: workspaceFieldMetadataArgs.isSystem ?? false,
|
isSystem: workspaceFieldMetadataArgs.isSystem ?? false,
|
||||||
|
isActive: workspaceFieldMetadataArgs.isActive ?? true,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -222,6 +223,7 @@ export class StandardFieldFactory {
|
|||||||
isCustom: false,
|
isCustom: false,
|
||||||
isSystem: true,
|
isSystem: true,
|
||||||
isNullable: workspaceRelationMetadataArgs.isNullable,
|
isNullable: workspaceRelationMetadataArgs.isNullable,
|
||||||
|
isActive: workspaceRelationMetadataArgs.isActive ?? true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,6 +241,7 @@ export class StandardFieldFactory {
|
|||||||
workspaceEntityMetadataArgs?.isSystem ||
|
workspaceEntityMetadataArgs?.isSystem ||
|
||||||
workspaceRelationMetadataArgs.isSystem,
|
workspaceRelationMetadataArgs.isSystem,
|
||||||
isNullable: true,
|
isNullable: true,
|
||||||
|
isActive: workspaceRelationMetadataArgs.isActive ?? true,
|
||||||
});
|
});
|
||||||
|
|
||||||
return fieldMetadataCollection;
|
return fieldMetadataCollection;
|
||||||
|
|||||||
@ -15,6 +15,7 @@ export type PartialFieldMetadata = Omit<
|
|||||||
isSystem?: boolean;
|
isSystem?: boolean;
|
||||||
workspaceId: string;
|
workspaceId: string;
|
||||||
objectMetadataId?: string;
|
objectMetadataId?: string;
|
||||||
|
isActive?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PartialComputedFieldMetadata = {
|
export type PartialComputedFieldMetadata = {
|
||||||
|
|||||||
@ -7,23 +7,23 @@ import {
|
|||||||
In,
|
In,
|
||||||
ObjectLiteral,
|
ObjectLiteral,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
import { v4 as uuidV4 } from 'uuid';
|
|
||||||
import { DeepPartial } from 'typeorm/common/DeepPartial';
|
import { DeepPartial } from 'typeorm/common/DeepPartial';
|
||||||
|
import { v4 as uuidV4 } from 'uuid';
|
||||||
|
|
||||||
import { PartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
|
import { PartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
|
||||||
import { PartialIndexMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface';
|
import { PartialIndexMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface';
|
||||||
|
|
||||||
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
import { FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input';
|
||||||
import {
|
import {
|
||||||
FieldMetadataEntity,
|
FieldMetadataEntity,
|
||||||
FieldMetadataType,
|
FieldMetadataType,
|
||||||
} from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
} from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
|
import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity';
|
||||||
|
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||||
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input';
|
|
||||||
import { WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage';
|
|
||||||
import { FieldMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory';
|
import { FieldMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory';
|
||||||
import { ObjectMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory';
|
import { ObjectMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory';
|
||||||
import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity';
|
import { WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class WorkspaceMetadataUpdaterService {
|
export class WorkspaceMetadataUpdaterService {
|
||||||
@ -104,7 +104,6 @@ export class WorkspaceMetadataUpdaterService {
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
isActive: true,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user