@@ -14,6 +14,24 @@ public class SQLiteStorage : JobStorage, IDisposable
14
14
private readonly SQLiteDbConnectionFactory _dbConnectionFactory ;
15
15
16
16
private readonly SQLiteStorageOptions _storageOptions ;
17
+
18
+ private readonly Dictionary < string , bool > _features = new Dictionary < string , bool > ( StringComparer . OrdinalIgnoreCase )
19
+ {
20
+ { "Storage.ExtendedApi" , false } ,
21
+ { "Job.Queue" , true } ,
22
+ { "Connection.GetUtcDateTime" , false } ,
23
+ { "Connection.BatchedGetFirstByLowestScoreFromSet" , false } ,
24
+ { "Connection.GetSetContains" , true } ,
25
+ { "Connection.GetSetCount.Limited" , false } ,
26
+ { "BatchedGetFirstByLowestScoreFromSet" , false } ,
27
+ { "Transaction.AcquireDistributedLock" , true } ,
28
+ { "Transaction.CreateJob" , true } ,
29
+ { "Transaction.SetJobParameter" , true } ,
30
+ { "TransactionalAcknowledge:InMemoryFetchedJob" , false } ,
31
+ { "Monitoring.DeletedStateGraphs" , false } ,
32
+ { "Monitoring.AwaitingJobs" , false }
33
+ } ;
34
+
17
35
private ConcurrentQueue < PooledHangfireDbContext > _dbContextPool = new ConcurrentQueue < PooledHangfireDbContext > ( ) ;
18
36
19
37
/// <summary>
@@ -113,6 +131,15 @@ private void EnqueueOrPhaseOut(PooledHangfireDbContext dbContext)
113
131
}
114
132
}
115
133
134
+ public override bool HasFeature ( string featureId )
135
+ {
136
+ if ( featureId == null ) throw new ArgumentNullException ( nameof ( featureId ) ) ;
137
+
138
+ return _features . TryGetValue ( featureId , out var isSupported )
139
+ ? isSupported
140
+ : base . HasFeature ( featureId ) ;
141
+ }
142
+
116
143
/// <summary>
117
144
/// Returns text representation of the object
118
145
/// </summary>
0 commit comments