コード例 #1
0
        public static bool IsTemporalVersioningEnabled(this DocumentDatabase database, string key, RavenJObject metadata)
        {
            if (key == null)
            {
                return(false);
            }

            // Don't ever version raven system documents.
            if (key.StartsWith("Raven/", StringComparison.InvariantCultureIgnoreCase))
            {
                return(false);
            }

            // Don't version this one from the test helpers either.
            if (key == "Pls Delete Me")
            {
                return(false);
            }

            // Don't version any doc that isn't an entity.
            var entityName = metadata.Value <string>(Constants.RavenEntityName);

            if (entityName == null)
            {
                return(false);
            }

            bool enabled;
            var  cacheKey = (database.Name ?? "") + ":" + entityName;

            if (ConfigCache.TryGetValue(cacheKey, out enabled))
            {
                return(enabled);
            }

            var temporalVersioningConfiguration = database.GetTemporalVersioningConfiguration(entityName);

            enabled = temporalVersioningConfiguration != null && temporalVersioningConfiguration.Enabled;
            ConfigCache.TryAdd(cacheKey, enabled);

            return(enabled);
        }