Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
         });
     }
 }
Exemplo n.º 3
0
 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
        }
Exemplo n.º 6
0
 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);
 }