In this PR we are 1. cleaning typeORM service by removing connectToDataSource method 2. using workspaceDataSource instead of mainDataSource when possible, and replacing raw SQL with workspaceRepository methods to use
62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
import { DataSource } from 'typeorm';
|
|
|
|
import { seedWorkspaceFavorites } from 'src/database/typeorm-seeds/workspace/favorites';
|
|
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
|
import { WorkspaceEntityManager } from 'src/engine/twenty-orm/entity-manager/workspace-entity-manager';
|
|
import { shouldSeedWorkspaceFavorite } from 'src/engine/utils/should-seed-workspace-favorite';
|
|
import { companyPrefillData } from 'src/engine/workspace-manager/standard-objects-prefill-data/company';
|
|
import { personPrefillData } from 'src/engine/workspace-manager/standard-objects-prefill-data/person';
|
|
import { seedViewWithDemoData } from 'src/engine/workspace-manager/standard-objects-prefill-data/seed-view-with-demo-data';
|
|
|
|
export const standardObjectsPrefillData = async (
|
|
mainDataSource: DataSource,
|
|
schemaName: string,
|
|
objectMetadata: ObjectMetadataEntity[],
|
|
) => {
|
|
const objectMetadataMap = objectMetadata.reduce((acc, object) => {
|
|
if (!object.standardId) {
|
|
throw new Error('Standard Id is not set for object: ${object.name}');
|
|
}
|
|
|
|
acc[object.standardId] = {
|
|
id: object.id,
|
|
fields: object.fields.reduce((acc, field) => {
|
|
if (!field.standardId) {
|
|
throw new Error('Standard Id is not set for field: ${field.name}');
|
|
}
|
|
|
|
acc[field.standardId] = field.id;
|
|
|
|
return acc;
|
|
}, {}),
|
|
};
|
|
|
|
return acc;
|
|
}, {});
|
|
|
|
mainDataSource.transaction(async (entityManager: WorkspaceEntityManager) => {
|
|
await companyPrefillData(entityManager, schemaName);
|
|
await personPrefillData(entityManager, schemaName);
|
|
const viewDefinitionsWithId = await seedViewWithDemoData(
|
|
entityManager,
|
|
schemaName,
|
|
objectMetadataMap,
|
|
);
|
|
|
|
await seedWorkspaceFavorites(
|
|
viewDefinitionsWithId
|
|
.filter(
|
|
(view) =>
|
|
view.key === 'INDEX' &&
|
|
shouldSeedWorkspaceFavorite(
|
|
view.objectMetadataId,
|
|
objectMetadataMap,
|
|
),
|
|
)
|
|
.map((view) => view.id),
|
|
entityManager,
|
|
schemaName,
|
|
);
|
|
});
|
|
};
|