Infinite scrolling in relation picker menu (#12051)
https://github.com/user-attachments/assets/4be785e0-ea8a-4c8e-840e-6fa0a663d7ba Closes #11938 --------- Co-authored-by: martmull <martmull@hotmail.fr>
This commit is contained in:
@ -23,42 +23,17 @@ export class SeederService {
|
||||
private readonly workspaceDataSourceService: WorkspaceDataSourceService,
|
||||
) {}
|
||||
|
||||
public async seedCustomObjects(
|
||||
dataSourceId: string,
|
||||
public async seedCustomObjectRecords(
|
||||
workspaceId: string,
|
||||
objectMetadataSeed: ObjectMetadataSeed,
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
objectRecordSeeds: Record<string, any>[],
|
||||
): Promise<void> {
|
||||
const createdObjectMetadata = await this.objectMetadataService.createOne({
|
||||
...objectMetadataSeed,
|
||||
dataSourceId,
|
||||
) {
|
||||
const { fieldMetadataSeeds, objectMetadata } = await this.getSeedMetadata(
|
||||
workspaceId,
|
||||
});
|
||||
|
||||
if (!createdObjectMetadata) {
|
||||
throw new Error("Object metadata couldn't be created");
|
||||
}
|
||||
|
||||
await this.fieldMetadataService.createMany(
|
||||
objectMetadataSeed.fields.map((fieldMetadataSeed) => ({
|
||||
...fieldMetadataSeed,
|
||||
objectMetadataId: createdObjectMetadata.id,
|
||||
workspaceId,
|
||||
})),
|
||||
objectMetadataSeed,
|
||||
);
|
||||
|
||||
const objectMetadataAfterFieldCreation =
|
||||
await this.objectMetadataService.findOneWithinWorkspace(workspaceId, {
|
||||
where: { nameSingular: objectMetadataSeed.nameSingular },
|
||||
});
|
||||
|
||||
if (!objectMetadataAfterFieldCreation) {
|
||||
throw new Error(
|
||||
"Object metadata couldn't be found after field creation.",
|
||||
);
|
||||
}
|
||||
|
||||
const schemaName =
|
||||
this.workspaceDataSourceService.getSchemaName(workspaceId);
|
||||
|
||||
@ -67,24 +42,11 @@ export class SeederService {
|
||||
|
||||
const entityManager: EntityManager = mainDataSource.createEntityManager();
|
||||
|
||||
const filteredFieldMetadataSeeds = objectMetadataSeed.fields.filter(
|
||||
(field) =>
|
||||
objectMetadataAfterFieldCreation.fields.some(
|
||||
(f) => f.name === field.name || f.name === `name`,
|
||||
),
|
||||
);
|
||||
|
||||
if (filteredFieldMetadataSeeds.length === 0) {
|
||||
throw new Error('No fields found for seeding, check metadata file');
|
||||
}
|
||||
|
||||
this.addNameFieldToFieldMetadataSeeds(filteredFieldMetadataSeeds);
|
||||
|
||||
const objectRecordSeedsAsSQLFlattenedSeeds = objectRecordSeeds.map(
|
||||
(recordSeed) => {
|
||||
const objectRecordSeedsAsSQLFlattenedSeeds = {};
|
||||
|
||||
for (const field of filteredFieldMetadataSeeds) {
|
||||
for (const field of fieldMetadataSeeds) {
|
||||
if (isCompositeFieldMetadataType(field.type)) {
|
||||
const compositeFieldTypeDefinition = compositeTypeDefinitions.get(
|
||||
field.type,
|
||||
@ -165,7 +127,7 @@ export class SeederService {
|
||||
.createQueryBuilder()
|
||||
.insert()
|
||||
.into(
|
||||
`${schemaName}.${computeTableName(objectMetadataAfterFieldCreation.nameSingular, true)}`,
|
||||
`${schemaName}.${computeTableName(objectMetadata.nameSingular, true)}`,
|
||||
sqlColumnNames,
|
||||
)
|
||||
.orIgnore()
|
||||
@ -174,6 +136,37 @@ export class SeederService {
|
||||
.execute();
|
||||
}
|
||||
|
||||
public async seedCustomObjects(
|
||||
dataSourceId: string,
|
||||
workspaceId: string,
|
||||
objectMetadataSeed: ObjectMetadataSeed,
|
||||
): Promise<void> {
|
||||
const createdObjectMetadata = await this.objectMetadataService.createOne({
|
||||
...objectMetadataSeed,
|
||||
dataSourceId,
|
||||
workspaceId,
|
||||
});
|
||||
|
||||
if (!createdObjectMetadata) {
|
||||
throw new Error("Object metadata couldn't be created");
|
||||
}
|
||||
|
||||
await this.fieldMetadataService.createMany(
|
||||
objectMetadataSeed.fields.map((fieldMetadataSeed) => ({
|
||||
...fieldMetadataSeed,
|
||||
objectMetadataId: createdObjectMetadata.id,
|
||||
workspaceId,
|
||||
})),
|
||||
);
|
||||
|
||||
const { fieldMetadataSeeds } = await this.getSeedMetadata(
|
||||
workspaceId,
|
||||
objectMetadataSeed,
|
||||
);
|
||||
|
||||
this.addNameFieldToFieldMetadataSeeds(fieldMetadataSeeds);
|
||||
}
|
||||
|
||||
private addNameFieldToFieldMetadataSeeds(
|
||||
arrayOfMetadataFields: Pick<CreateFieldInput, 'name' | 'type' | 'label'>[],
|
||||
) {
|
||||
@ -184,6 +177,34 @@ export class SeederService {
|
||||
});
|
||||
}
|
||||
|
||||
private async getSeedMetadata(
|
||||
workspaceId: string,
|
||||
objectMetadataSeed: ObjectMetadataSeed,
|
||||
) {
|
||||
const objectMetadata =
|
||||
await this.objectMetadataService.findOneWithinWorkspace(workspaceId, {
|
||||
where: { nameSingular: objectMetadataSeed.nameSingular },
|
||||
});
|
||||
|
||||
if (!objectMetadata) {
|
||||
throw new Error(
|
||||
"Object metadata couldn't be found after field creation.",
|
||||
);
|
||||
}
|
||||
|
||||
const fieldMetadataSeeds = objectMetadataSeed.fields.filter((field) =>
|
||||
objectMetadata.fields.some(
|
||||
(f) => f.name === field.name || f.name === `name`,
|
||||
),
|
||||
);
|
||||
|
||||
if (fieldMetadataSeeds.length === 0) {
|
||||
throw new Error('No fields found for seeding, check metadata file');
|
||||
}
|
||||
|
||||
return { fieldMetadataSeeds, objectMetadata };
|
||||
}
|
||||
|
||||
private turnCompositeSubFieldValueAsSQLValue(
|
||||
fieldType: FieldMetadataType,
|
||||
subFieldName: string,
|
||||
|
||||
Reference in New Issue
Block a user