public void Execute(DocumentDatabase database)
{
Database = database;
var indexDefinition = database.GetIndexDefinition(RavenDocumentsByExpirationDate);
if (indexDefinition == null)
{
database.PutIndex(RavenDocumentsByExpirationDate,
new IndexDefinition
{
Map =
@"
from doc in docs
let expiry = doc[""@metadata""][""Raven-Expiration-Date""]
where expiry != null
select new { Expiry = expiry }
"
});
}
var deleteFrequencyInSeconds = database.Configuration.GetConfigurationValue<int>("Raven/Expiration/DeleteFrequencySeconds") ?? 300;
logger.Info("Initialized expired document cleaner, will check for expired documents every {0} seconds",
deleteFrequencyInSeconds);
timer = new Timer(TimerCallback, null, TimeSpan.FromSeconds(deleteFrequencyInSeconds), TimeSpan.FromSeconds(deleteFrequencyInSeconds));
}