public override VetoResult AllowPut(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata, Abstractions.Data.TransactionInformation transactionInformation) { if (key.Contains(@"\")) { return(VetoResult.Deny(@"Document name cannot contain '\' but attempted to save with: " + key)); } if (string.Equals(key, "Raven/Databases/System", StringComparison.OrdinalIgnoreCase)) { return (VetoResult.Deny( @"Cannot create a tenant database with the name 'System', that name is reserved for the actual system database")); } return(VetoResult.Allowed); }
public override void OnPut(string key, Raven.Json.Linq.RavenJObject document, Raven.Json.Linq.RavenJObject metadata, Abstractions.Data.TransactionInformation transactionInformation) { using (Database.DisableAllTriggersForCurrentThread()) { Database.TransactionalStorage.Batch(accessor => { var tombstone = accessor.Lists.Read(Constants.RavenPeriodicExportsDocsTombstones, key); if (tombstone == null) { return; } accessor.Lists.Remove(Constants.RavenPeriodicExportsDocsTombstones, key); }); } }
public override void AfterDelete(string key, Abstractions.Data.TransactionInformation transactionInformation) { SizeQuotaConfiguration.GetConfiguration(Database).AfterDelete(); }
public override VetoResult AllowPut(string key, Json.Linq.RavenJObject document, Json.Linq.RavenJObject metadata, Abstractions.Data.TransactionInformation transactionInformation) { if (metadata.ContainsKey(Constants.RavenReplicationConflictDocument) && metadata.ContainsKey(Constants.RavenReplicationConflictDocumentForcePut) == false) { return(VetoResult.Deny("You cannot PUT a document with metadata " + Constants.RavenReplicationConflictDocument)); } JsonDocument documentByKey = null; Database.TransactionalStorage.Batch(accessor => { documentByKey = accessor.Documents.DocumentByKey(key); }); if (documentByKey == null) { return(VetoResult.Allowed); } if (documentByKey.Metadata.ContainsKey(Constants.RavenReplicationConflictDocument)) { return(VetoResult.Deny("Conflict documents (with " + Constants.RavenReplicationConflictDocument + ") are read only and can only be modified by RavenDB when you resolve the conflict")); } return(VetoResult.Allowed); }
public override void OnPut(string key, Json.Linq.RavenJObject jsonReplicationDocument, Json.Linq.RavenJObject metadata, Abstractions.Data.TransactionInformation transactionInformation) { if (metadata.Remove(Constants.RavenReplicationConflictDocumentForcePut)) { return; } metadata.Remove(Constants.RavenReplicationConflictDocument); // or conflict documents }
public override ReadVetoResult AllowRead(string key, Json.Linq.RavenJObject metadata, ReadOperation operation, Abstractions.Data.TransactionInformation transactionInformation) { if (operation == ReadOperation.Index && metadata.ContainsKey(Constants.RavenReplicationConflictDocument)) { return(ReadVetoResult.Ignore); } return(ReadVetoResult.Allowed); }