Skip to content

Commit 3b97014

Browse files
atGit2021CarsonF
andauthored
Pnp planning persist (#3334)
Co-authored-by: Carson Full <[email protected]>
1 parent 9a12d10 commit 3b97014

File tree

5 files changed

+50
-2
lines changed

5 files changed

+50
-2
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Injectable } from '@nestjs/common';
2+
import { ID } from '~/common';
3+
import { PnpExtractionResult } from './extraction-result.dto';
4+
import { PnpExtractionResultRepository } from './pnp-extraction-result.edgedb.repository';
5+
6+
@Injectable()
7+
export class PlanningExtractionResultSaver {
8+
constructor(private readonly repo: PnpExtractionResultRepository) {}
9+
10+
async save(file: ID<'FileVersion'>, result: PnpExtractionResult) {
11+
await this.repo.save(file, result);
12+
}
13+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Parent, ResolveField, Resolver } from '@nestjs/graphql';
2+
import { Loader, LoaderOf } from '@seedcompany/data-loader';
3+
import { LanguageEngagement } from '../../engagement/dto';
4+
import { PnpPlanningExtractionResult } from './extraction-result.dto';
5+
import { PnpExtractionResultLoader } from './pnp-extraction-result.loader';
6+
7+
@Resolver(LanguageEngagement)
8+
export class PnpExtractionResultLanguageEngagementConnectionResolver {
9+
@ResolveField(() => PnpPlanningExtractionResult, {
10+
nullable: true,
11+
})
12+
async pnpExtractionResult(
13+
@Parent() engagement: LanguageEngagement,
14+
@Loader(() => PnpExtractionResultLoader)
15+
loader: LoaderOf<PnpExtractionResultLoader>,
16+
): Promise<PnpPlanningExtractionResult | null> {
17+
const file = engagement.pnp.value;
18+
if (!file) {
19+
return null;
20+
}
21+
const { result } = await loader.load(file.id);
22+
return result;
23+
}
24+
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
1-
import { Module } from '@nestjs/common';
1+
import { forwardRef, Module } from '@nestjs/common';
22
import { splitDb2 } from '~/core';
33
import { ProductModule } from '../../product/product.module';
4+
import { PlanningExtractionResultSaver } from './planning-extraction-result-saver';
5+
import { PnpExtractionResultLanguageEngagementConnectionResolver } from './pnp-extraction-result-language-engagement-connection.resolver';
46
import { PnpExtractionResultProgressReportConnectionResolver } from './pnp-extraction-result-progress-report-connection.resolver';
57
import { PnpExtractionResultRepository } from './pnp-extraction-result.edgedb.repository';
68
import { PnpExtractionResultLoader } from './pnp-extraction-result.loader';
79
import { PnpExtractionResultNeo4jRepository } from './pnp-extraction-result.neo4j.repository';
810
import { SaveProgressExtractionResultHandler } from './save-progress-extraction-result.handler';
911

1012
@Module({
11-
imports: [ProductModule],
13+
imports: [forwardRef(() => ProductModule)],
1214
providers: [
15+
PnpExtractionResultLanguageEngagementConnectionResolver,
1316
PnpExtractionResultProgressReportConnectionResolver,
1417
PnpExtractionResultLoader,
18+
PlanningExtractionResultSaver,
1519
SaveProgressExtractionResultHandler,
1620
splitDb2(PnpExtractionResultRepository, {
1721
edge: PnpExtractionResultRepository,
1822
neo4j: PnpExtractionResultNeo4jRepository,
1923
}),
2024
],
25+
exports: [PlanningExtractionResultSaver],
2126
})
2227
export class PnpExtractionResultModule {}

src/components/product/handlers/extract-products-from-pnp.handler.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
} from '../../engagement/events';
66
import { FileService } from '../../file';
77
import { PnpPlanningExtractionResult } from '../../pnp/extraction-result';
8+
import { PlanningExtractionResultSaver } from '../../pnp/extraction-result/planning-extraction-result-saver';
89
import { getAvailableSteps } from '../dto';
910
import { PnpProductSyncService } from '../pnp-product-sync.service';
1011

@@ -17,6 +18,7 @@ export class ExtractProductsFromPnpHandler
1718
constructor(
1819
private readonly syncer: PnpProductSyncService,
1920
private readonly files: FileService,
21+
private readonly planningExtractionResultSaver: PlanningExtractionResultSaver,
2022
) {}
2123

2224
async handle(event: SubscribedEvent): Promise<void> {
@@ -55,5 +57,7 @@ export class ExtractProductsFromPnpHandler
5557
actionableProductRows,
5658
session: event.session,
5759
});
60+
61+
await this.planningExtractionResultSaver.save(file.latestVersionId, result);
5862
}
5963
}

src/components/product/product.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { forwardRef, Module } from '@nestjs/common';
22
import { AuthorizationModule } from '../authorization/authorization.module';
33
import { FileModule } from '../file/file.module';
4+
import { PnpExtractionResultModule } from '../pnp/extraction-result/pnp-extraction-result.module';
45
import { ScriptureModule } from '../scripture';
56
import { StoryModule } from '../story/story.module';
67
import * as handlers from './handlers';
@@ -20,6 +21,7 @@ import { ProductService } from './product.service';
2021
ScriptureModule,
2122
FileModule,
2223
StoryModule,
24+
PnpExtractionResultModule,
2325
],
2426
providers: [
2527
ProductResolver,

0 commit comments

Comments
 (0)