Add standardObject seeds (#2140)

* Add standardObject seeds

* use for of
This commit is contained in:
Weiko
2023-10-20 14:35:25 +02:00
committed by GitHub
parent 993be61ee2
commit cc9ffb16ad
4 changed files with 81 additions and 2 deletions

View File

@ -45,9 +45,10 @@ export class MigrationRunnerService {
// Loop over each migration and create or update the table
// TODO: Should be done in a transaction
flattenedPendingMigrations.forEach(async (migration) => {
for (const migration of flattenedPendingMigrations) {
await this.handleTableChanges(queryRunner, schemaName, migration);
});
}
// Update appliedAt date for each migration
// TODO: Should be done after the migration is successful

View File

@ -0,0 +1,32 @@
[
{
"name": "Airbnb",
"domainName": "airbnb.com",
"address": "San Francisco",
"employees": 5000
},
{
"name": "Qonto",
"domainName": "qonto.com",
"address": "San Francisco",
"employees": 800
},
{
"name": "Stripe",
"domainName": "stripe.com",
"address": "San Francisco",
"employees": 8000
},
{
"name": "Figma",
"domainName": "figma.com",
"address": "San Francisco",
"employees": 800
},
{
"name": "Notion",
"domainName": "notion.com",
"address": "San Francisco",
"employees": 400
}
]

View File

@ -0,0 +1,5 @@
import companySeeds from './companies.seeds.json';
export const standardObjectsSeeds = {
companyV2: companySeeds,
};

View File

@ -8,8 +8,10 @@ import { ObjectMetadataService } from 'src/metadata/object-metadata/services/obj
import { DataSourceMetadataService } from 'src/metadata/data-source-metadata/data-source-metadata.service';
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
import { ObjectMetadata } from 'src/metadata/object-metadata/object-metadata.entity';
import { DataSourceMetadata } from 'src/metadata/data-source-metadata/data-source-metadata.entity';
import { standardObjectsMetadata } from './standard-objects/standard-object-metadata';
import { standardObjectsSeeds } from './standard-objects/standard-object-seeds';
@Injectable()
export class TenantInitialisationService {
@ -51,6 +53,11 @@ export class TenantInitialisationService {
dataSourceMetadata.id,
workspaceId,
);
await this.prefillWorkspaceWithStandardObjects(
dataSourceMetadata,
workspaceId,
);
}
/**
@ -90,4 +97,38 @@ export class TenantInitialisationService {
),
);
}
private async prefillWorkspaceWithStandardObjects(
dataSourceMetadata: DataSourceMetadata,
workspaceId: string,
) {
const objects =
await this.objectMetadataService.getObjectMetadataFromDataSourceId(
dataSourceMetadata.id,
);
const worksapceDataSource =
await this.dataSourceService.connectToWorkspaceDataSource(workspaceId);
for (const object of objects) {
const seedData = standardObjectsSeeds[object.nameSingular];
if (!seedData) {
continue;
}
const fields = standardObjectsMetadata[object.nameSingular].fields;
const columns = fields.map((field: FieldMetadata) =>
Object.values(field.targetColumnMap),
);
worksapceDataSource
?.createQueryBuilder()
.insert()
.into(`${dataSourceMetadata.schema}.${object.targetTableName}`, columns)
.values(seedData)
.execute();
}
}
}