related to https://github.com/twentyhq/core-team-issues/issues/601 ## Done - add a `onDbEvent` `Subscription` graphql endpoint to listen to database_event using what we have done with webhooks: - you can subscribe to any `action` (created, updated, ...) for any `objectNameSingular` or a specific `recordId`. Parameters are nullable and treated as wildcards when null. - returns events with following shape ```typescript @Field(() => String) eventId: string; @Field() emittedAt: string; @Field(() => DatabaseEventAction) action: DatabaseEventAction; @Field(() => String) objectNameSingular: string; @Field(() => GraphQLJSON) record: ObjectRecord; @Field(() => [String], { nullable: true }) updatedFields?: string[]; ``` - front provide a componentEffect `<ListenRecordUpdatesEffect />` that listen for an `objectNameSingular`, a `recordId` and a list of `listenedFields`. It subscribes to record updates and updates its apollo cached value for specified `listenedFields` - subscription is protected with credentials ## Result Here is an application with `workflowRun` https://github.com/user-attachments/assets/c964d857-3b54-495f-bf14-587ba26c5a8c --------- Co-authored-by: prastoin <paul@twenty.com>
50 lines
1002 B
JavaScript
50 lines
1002 B
JavaScript
// @ts-check
|
|
const globalCoverage = {
|
|
branches: 23,
|
|
statements: 39,
|
|
lines: 39,
|
|
functions: 28,
|
|
exclude: ['src/generated/**/*'],
|
|
};
|
|
|
|
const modulesCoverage = {
|
|
branches: 25,
|
|
statements: 43,
|
|
lines: 44,
|
|
functions: 38,
|
|
include: ['src/modules/**/*'],
|
|
exclude: ['src/**/*.ts'],
|
|
};
|
|
|
|
const pagesCoverage = {
|
|
branches: 35,
|
|
statements: 60,
|
|
lines: 60,
|
|
functions: 45,
|
|
exclude: ['src/generated/**/*', 'src/modules/**/*', 'src/**/*.ts'],
|
|
};
|
|
|
|
const performanceCoverage = {
|
|
branches: 35,
|
|
statements: 60,
|
|
lines: 60,
|
|
functions: 45,
|
|
exclude: ['src/generated/**/*', 'src/modules/**/*', 'src/**/*.ts'],
|
|
};
|
|
|
|
const getCoverageConfig = () => {
|
|
const storybookStoriesFolders = process.env.STORYBOOK_SCOPE;
|
|
switch (storybookStoriesFolders) {
|
|
case 'pages':
|
|
return pagesCoverage;
|
|
case 'modules':
|
|
return modulesCoverage;
|
|
case 'performance':
|
|
return performanceCoverage;
|
|
default:
|
|
return globalCoverage;
|
|
}
|
|
};
|
|
|
|
module.exports = getCoverageConfig();
|