@@ -18,12 +18,14 @@ export default class TableStorageMapper<
1818 TPartitionKeyFields extends keyof TModel ,
1919 TRowKeyFields extends keyof TModel ,
2020> implements Mapper < TModel , TPartitionKeyFields , TRowKeyFields > {
21+ readonly #ModelClass: ModelClass < TModel , TPartitionKeyFields , TRowKeyFields > ;
2122 readonly #tableClient: TableClient ;
2223
2324 constructor (
24- private readonly ModelClass : ModelClass < TModel , TPartitionKeyFields , TRowKeyFields > ,
25+ ModelClass : ModelClass < TModel , TPartitionKeyFields , TRowKeyFields > ,
2526 tableClient : TableClient = createTableClient ( ModelClass . name ) ,
2627 ) {
28+ this . #ModelClass = ModelClass ;
2729 this . #tableClient = tableClient ;
2830 }
2931
@@ -32,17 +34,17 @@ export default class TableStorageMapper<
3234 }
3335
3436 public async insertOrMerge ( model : TModel ) {
35- const entity = this . toEntity ( model ) ;
37+ const entity = this . # toEntity( model ) ;
3638 await this . #tableClient. upsertEntity ( entity , 'Merge' ) ;
3739 }
3840
3941 public async findOne ( identity : Pick < TModel , TPartitionKeyFields | TRowKeyFields > ) : Promise < Result < TModel > | null > {
4042 try {
4143 const result = await this . #tableClient. getEntity < TModel > (
42- encodeKey ( this . ModelClass . createPartitionKey ( identity ) ) ,
43- encodeKey ( this . ModelClass . createRowKey ( identity ) || '' ) ,
44+ encodeKey ( this . # ModelClass. createPartitionKey ( identity ) ) ,
45+ encodeKey ( this . # ModelClass. createRowKey ( identity ) || '' ) ,
4446 ) ;
45- return this . toModel ( result ) ;
47+ return this . # toModel( result ) ;
4648 } catch ( err ) {
4749 if ( hasErrorCode ( err , errCodes . RESOURCE_NOT_FOUND ) ) {
4850 return null ;
@@ -54,14 +56,14 @@ export default class TableStorageMapper<
5456 }
5557
5658 public async findAll (
57- query : DashboardQuery < TModel , TPartitionKeyFields , TRowKeyFields > = DashboardQuery . create ( this . ModelClass ) ,
59+ query : DashboardQuery < TModel , TPartitionKeyFields , TRowKeyFields > = DashboardQuery . create ( this . # ModelClass) ,
5860 ) : Promise < Result < TModel > [ ] > {
5961 const tableQuery = query . build ( ) ;
6062 const entities = this . #tableClient. listEntities < TModel > ( { queryOptions : tableQuery } ) ;
6163
6264 const results : Result < TModel > [ ] = [ ] ;
6365 for await ( const entity of entities ) {
64- results . push ( this . toModel ( entity ) ) ;
66+ results . push ( this . # toModel( entity ) ) ;
6567 }
6668 return results ;
6769 }
@@ -73,7 +75,7 @@ export default class TableStorageMapper<
7375 * @throws {OptimisticConcurrencyError }
7476 */
7577 public async replace ( model : TModel , etag : string ) : Promise < Result < TModel > > {
76- const entity = this . toEntity ( model ) ;
78+ const entity = this . # toEntity( model ) ;
7779 try {
7880 const result = await this . #tableClient. updateEntity ( entity , 'Replace' , { etag } ) ;
7981 return { model, etag : result . etag ! } ;
@@ -89,7 +91,7 @@ export default class TableStorageMapper<
8991 }
9092
9193 public async insert ( model : TModel ) : Promise < Result < TModel > > {
92- const entity = this . toEntity ( model ) ;
94+ const entity = this . # toEntity( model ) ;
9395 try {
9496 const result = await this . #tableClient. createEntity ( entity ) ;
9597 return { model, etag : result . etag ! } ;
@@ -107,8 +109,8 @@ export default class TableStorageMapper<
107109 public async delete ( identity : Pick < TModel , TPartitionKeyFields | TRowKeyFields > ) : Promise < void > {
108110 try {
109111 await this . #tableClient. deleteEntity (
110- encodeKey ( this . ModelClass . createPartitionKey ( identity ) ) ,
111- encodeKey ( this . ModelClass . createRowKey ( identity ) || '' ) ,
112+ encodeKey ( this . # ModelClass. createPartitionKey ( identity ) ) ,
113+ encodeKey ( this . # ModelClass. createRowKey ( identity ) || '' ) ,
112114 ) ;
113115 } catch ( err ) {
114116 if ( hasErrorCode ( err , errCodes . RESOURCE_NOT_FOUND ) ) {
@@ -119,24 +121,24 @@ export default class TableStorageMapper<
119121 }
120122 }
121123
122- private toModel ( entity : TableEntityResult < TModel > ) : Result < TModel > {
123- const value = new this . ModelClass ( ) ;
124- this . ModelClass . identify ( value , decodeKey ( entity . partitionKey ! ) , decodeKey ( entity . rowKey ! ) ) ;
125- this . ModelClass . persistedFields . forEach ( ( field ) => ( value [ field ] = entity [ field ] ) ) ;
124+ # toModel( entity : TableEntityResult < TModel > ) : Result < TModel > {
125+ const value = new this . # ModelClass( ) ;
126+ this . # ModelClass. identify ( value , decodeKey ( entity . partitionKey ! ) , decodeKey ( entity . rowKey ! ) ) ;
127+ this . # ModelClass. persistedFields . forEach ( ( field ) => ( value [ field ] = entity [ field ] ) ) ;
126128 return {
127129 etag : entity . etag ,
128130 model : value ,
129131 } ;
130132 }
131133
132- private toEntity ( entity : TModel ) : TableEntity < TModel > {
134+ # toEntity( entity : TModel ) : TableEntity < TModel > {
133135 // eslint-disable-next-line @typescript-eslint/no-explicit-any
134136 const data : TableEntity < any > = {
135- partitionKey : encodeKey ( this . ModelClass . createPartitionKey ( entity ) ) ,
136- rowKey : encodeKey ( this . ModelClass . createRowKey ( entity ) || '' ) ,
137+ partitionKey : encodeKey ( this . # ModelClass. createPartitionKey ( entity ) ) ,
138+ rowKey : encodeKey ( this . # ModelClass. createRowKey ( entity ) || '' ) ,
137139 } ;
138140 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
139- this . ModelClass . persistedFields . forEach ( ( field ) => ( data [ field ] = entity [ field ] ) ) ;
141+ this . # ModelClass. persistedFields . forEach ( ( field ) => ( data [ field ] = entity [ field ] ) ) ;
140142
141143 return data as TableEntity < TModel > ;
142144 }
0 commit comments