44import { Guid , IEquatable } from '@dolittle/rudiments' ;
55import { Constructor } from '@dolittle/types' ;
66
7- import { Generation } from '@dolittle/sdk.artifacts' ;
7+ import { ComplexValueMap , Generation } from '@dolittle/sdk.artifacts' ;
88import { IClientBuildResults } from '@dolittle/sdk.common' ;
99import { EventType , EventTypeId , EventTypeIdLike , EventTypeMap , IEventTypes } from '@dolittle/sdk.events' ;
1010
@@ -13,12 +13,15 @@ import { IProjection } from '../IProjection';
1313import { KeySelector } from '../KeySelector' ;
1414import { Projection } from '../Projection' ;
1515import { ProjectionCallback } from '../ProjectionCallback' ;
16- import { OnDecoratedProjectionMethod } from './OnDecoratedProjectionMethod' ;
17- import { getOnDecoratedMethods } from './onDecorator' ;
18- import { ProjectionDecoratedType } from './ProjectionDecoratedType' ;
1916import { ProjectionCopies } from '../Copies/ProjectionCopies' ;
17+ import { ProjectionField } from '../Copies/ProjectionField' ;
18+ import { Conversion } from '../Copies/MongoDB/Conversion' ;
2019import { MongoDBCopies } from '../Copies/MongoDB/MongoDBCopies' ;
20+ import { getConvertToMongoDBDecoratedProperties } from './Copies/convertToMongoDBDecorator' ;
2121import { getDecoratedCopyProjectionToMongoDB , isDecoratedCopyProjectionToMongoDB } from './Copies/copyProjectionToMongoDBDecorator' ;
22+ import { OnDecoratedProjectionMethod } from './OnDecoratedProjectionMethod' ;
23+ import { getOnDecoratedMethods } from './onDecorator' ;
24+ import { ProjectionDecoratedType } from './ProjectionDecoratedType' ;
2225
2326/**
2427 * Represents a builder for building a projection from a class.
@@ -132,9 +135,14 @@ export class ProjectionClassBuilder<T> implements IEquatable {
132135 }
133136
134137 const decoratedType = getDecoratedCopyProjectionToMongoDB ( this . type . type ) ;
138+ const collection = decoratedType . collection ;
135139
136- // TODO: Conversions
140+ const decoratedProperties = getConvertToMongoDBDecoratedProperties ( this . type . type ) ;
141+ const conversions : Map < ProjectionField , Conversion > = new ComplexValueMap ( ProjectionField , field => [ field . value ] , 1 ) ;
142+ for ( const decoratedProperty of decoratedProperties ) {
143+ conversions . set ( decoratedProperty . field , decoratedProperty . conversion ) ;
144+ }
137145
138- return new MongoDBCopies ( true , decoratedType . collection , new Map ( ) ) ;
146+ return new MongoDBCopies ( true , collection , conversions ) ;
139147 }
140148}
0 commit comments