@@ -68,8 +68,8 @@ await database.CreateCollectionAsync(options.LockCollection, cancellationToken:
6868 . ConfigureAwait ( false ) ;
6969
7070 await Task . WhenAll (
71- TryCreateIndexesAsync < ReceivedMessage > ( options . ReceivedCollection ) ,
72- TryCreateIndexesAsync < PublishedMessage > ( options . PublishedCollection ) ) . ConfigureAwait ( false ) ;
71+ CreateReceivedMessageIndexesAsync ( ) ,
72+ CreatePublishedMessageIndexesAsync ( ) ) . ConfigureAwait ( false ) ;
7373
7474 if ( _capOptions . Value . UseStorageLock )
7575 {
@@ -88,33 +88,41 @@ await database.GetCollection<Lock>(options.LockCollection)
8888
8989 _logger . LogDebug ( "Ensuring all create database tables script are applied." ) ;
9090
91-
92- async Task TryCreateIndexesAsync < T > ( string collectionName )
91+ async Task CreateReceivedMessageIndexesAsync ( )
9392 {
94- var indexNames = new [ ] { "Name" , "Added" , "ExpiresAt" , "StatusName" , "Retries" , "Version" } ;
95- var col = database . GetCollection < T > ( collectionName ) ;
96- using ( var cursor = await col . Indexes . ListAsync ( cancellationToken ) . ConfigureAwait ( false ) )
93+ IndexKeysDefinitionBuilder < ReceivedMessage > builder = Builders < ReceivedMessage > . IndexKeys ;
94+ var col = database . GetCollection < ReceivedMessage > ( options . ReceivedCollection ) ;
95+
96+ CreateIndexModel < ReceivedMessage > [ ] indexes =
9797 {
98- var existingIndexes = await cursor . ToListAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
99- var existingIndexNames = existingIndexes . Select ( o => o [ "name" ] . AsString ) . ToArray ( ) ;
100- indexNames = indexNames . Except ( existingIndexNames ) . ToArray ( ) ;
101- }
98+ new ( builder . Ascending ( x => x . Name ) ) ,
99+ new ( builder . Ascending ( x => x . Added ) ) ,
100+ new ( builder . Ascending ( x => x . ExpiresAt ) ) ,
101+ new ( builder . Ascending ( x => x . StatusName ) ) ,
102+ new ( builder . Ascending ( x => x . Retries ) ) ,
103+ new ( builder . Ascending ( x => x . Version ) )
104+ } ;
105+
106+ await col . Indexes . CreateManyAsync ( indexes , cancellationToken ) ;
107+ }
102108
103- if ( indexNames . Any ( ) == false )
104- return ;
109+ async Task CreatePublishedMessageIndexesAsync ( )
110+ {
111+ IndexKeysDefinitionBuilder < PublishedMessage > builder = Builders < PublishedMessage > . IndexKeys ;
112+ var col = database . GetCollection < PublishedMessage > ( options . PublishedCollection ) ;
105113
106- var indexes = indexNames . Select ( indexName =>
114+ CreateIndexModel < PublishedMessage > [ ] indexes =
107115 {
108- var indexOptions = new CreateIndexOptions
109- {
110- Name = indexName ,
111- Background = true
112- } ;
113- var indexBuilder = Builders < T > . IndexKeys ;
114- return new CreateIndexModel < T > ( indexBuilder . Ascending ( indexName ) , indexOptions ) ;
115- } ) . ToArray ( ) ;
116-
117- await col . Indexes . CreateManyAsync ( indexes , cancellationToken ) . ConfigureAwait ( false ) ;
116+ new ( builder . Ascending ( x => x . Name ) ) ,
117+ new ( builder . Ascending ( x => x . Added ) ) ,
118+ new ( builder . Ascending ( x => x . ExpiresAt ) ) ,
119+ new ( builder . Ascending ( x => x . StatusName ) ) ,
120+ new ( builder . Ascending ( x => x . Retries ) ) ,
121+ new ( builder . Ascending ( x => x . Version ) ) ,
122+ new ( builder . Ascending ( x => x . StatusName ) . Ascending ( x => x . ExpiresAt ) )
123+ } ;
124+
125+ await col . Indexes . CreateManyAsync ( indexes , cancellationToken ) ;
118126 }
119127 }
120- }
128+ }
0 commit comments