In this PR: 1. Refactor guards to avoid duplicated queries: WorkspaceAuthGuard and UserAuthGuard only check for existence of workspace and user in the request without querying the database
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
|
|
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
|
|
|
|
export type FieldMetadataMap = Record<string, FieldMetadataInterface>;
|
|
|
|
export type ObjectMetadataMapItem = Omit<ObjectMetadataInterface, 'fields'> & {
|
|
fields: FieldMetadataMap;
|
|
};
|
|
|
|
export type ObjectMetadataMap = Record<string, ObjectMetadataMapItem>;
|
|
|
|
export const generateObjectMetadataMap = (
|
|
objectMetadataCollection: ObjectMetadataInterface[],
|
|
): ObjectMetadataMap => {
|
|
const objectMetadataMap: ObjectMetadataMap = {};
|
|
|
|
for (const objectMetadata of objectMetadataCollection) {
|
|
const fieldsMap: FieldMetadataMap = {};
|
|
|
|
for (const fieldMetadata of objectMetadata.fields) {
|
|
fieldsMap[fieldMetadata.name] = fieldMetadata;
|
|
fieldsMap[fieldMetadata.id] = fieldMetadata;
|
|
}
|
|
|
|
const processedObjectMetadata: ObjectMetadataMapItem = {
|
|
...objectMetadata,
|
|
fields: fieldsMap,
|
|
};
|
|
|
|
objectMetadataMap[objectMetadata.id] = processedObjectMetadata;
|
|
objectMetadataMap[objectMetadata.nameSingular] = processedObjectMetadata;
|
|
objectMetadataMap[objectMetadata.namePlural] = processedObjectMetadata;
|
|
}
|
|
|
|
return objectMetadataMap;
|
|
};
|