public static T[] MoreLikeThis <T>(this ISyncAdvancedSessionOperation advancedSession, string index, MoreLikeThisQuery parameters) { if (string.IsNullOrEmpty(index)) { throw new ArgumentException("Index name cannot be null or empty", "index"); } parameters.IndexName = index; // /morelikethis/(index-name)/(ravendb-document-id)?fields=(fields) var cmd = advancedSession.DocumentStore.DatabaseCommands; var inMemoryDocumentSessionOperations = ((InMemoryDocumentSessionOperations)advancedSession); inMemoryDocumentSessionOperations.IncrementRequestCount(); var multiLoadOperation = new MultiLoadOperation(inMemoryDocumentSessionOperations, cmd.DisableAllCaching, null, null); MultiLoadResult multiLoadResult; do { multiLoadOperation.LogOperation(); using (multiLoadOperation.EnterMultiLoadContext()) { multiLoadResult = cmd.MoreLikeThis(parameters); } } while (multiLoadOperation.SetResult(multiLoadResult)); return(multiLoadOperation.Complete <T>()); }
public static OperationAllowedResult[] IsOperationAllowedOnDocument(this ISyncAdvancedSessionOperation session, string userId, string operation, params string[] documentIds) { var serverClient = ((DocumentSession)session).DatabaseCommands as ServerClient; if (serverClient == null) { throw new InvalidOperationException("Cannot get whatever operation is allowed on document in embedded mode."); } var url = new StringBuilder("/authorization/IsAllowed/") .Append(Uri.EscapeUriString(userId)) .Append("?operation=") .Append(Uri.EscapeUriString(operation)); foreach (var docId in documentIds) { url.Append("&id=").Append(Uri.EscapeUriString(docId)); } var result = serverClient.ExecuteGetRequest(url.ToString()); return (session.DocumentStore.Conventions.CreateSerializer().Deserialize <OperationAllowedResult[]>( new RavenJTokenReader(result))); }
public static T[] MoreLikeThis <T>(this ISyncAdvancedSessionOperation advancedSession, string index, MoreLikeThisQueryParameters parameters) { var cmd = advancedSession.DocumentStore.DatabaseCommands as ServerClient; if (cmd == null) { throw new NotImplementedException("Embedded client isn't supported by the MoreLikeThis bundle"); } var inMemoryDocumentSessionOperations = ((InMemoryDocumentSessionOperations)advancedSession); // /morelikethis/(index-name)/(ravendb-document-id)?fields=(fields) EnsureIsNotNullOrEmpty(index, "index"); inMemoryDocumentSessionOperations.IncrementRequestCount(); var multiLoadOperation = new MultiLoadOperation(inMemoryDocumentSessionOperations, cmd.DisableAllCaching, null, null); MultiLoadResult multiLoadResult; do { multiLoadOperation.LogOperation(); using (multiLoadOperation.EnterMultiLoadContext()) { var result = cmd.ExecuteGetRequest(parameters.GetRequestUri(index)); multiLoadResult = ((RavenJObject)result).Deserialize <MultiLoadResult>(inMemoryDocumentSessionOperations.Conventions); } } while (multiLoadOperation.SetResult(multiLoadResult)); return(multiLoadOperation.Complete <T>()); }
/// <summary> /// Gets the children for specific a specific page /// </summary> /// <param name="session">The session.</param> /// <param name="page">The page.</param> /// <returns></returns> /// <exception cref="System.NullReferenceException">StructureInfo</exception> public static IEnumerable <IPage> GetChildrenFor(this ISyncAdvancedSessionOperation session, IPage page) { try { var context = new BrickPileContext(HttpContext.Current.Request.RequestContext); if (context.NavigationContext != null && context.NavigationContext.OpenPages != null) { return(context.NavigationContext.OpenPages.Where(x => x.Parent != null && x.Parent.Id == page.Id)); } Trie trie = context.Trie; if (trie == null) { throw new NullReferenceException("The RouteData DataToken does not contains the Trie object"); } IEnumerable <TrieNode> nodes = trie.RootNode.Flatten(n => n.Children); TrieNode node = nodes.SingleOrDefault(n => n.PageId.CompareToIgnoreDraftId(page.Id)); return(node != null ? ((DocumentSession)session).Load <IPage>(node.Children.Select(n => n.PageId).ToArray()) .OrderBy(p => p.Metadata.SortOrder) : Enumerable.Empty <IPage>()); } catch (ArgumentNullException exception) {} return(null); }
public static T[] MoreLikeThis <T>(this ISyncAdvancedSessionOperation advancedSession, string index, string documentId) { return(MoreLikeThis <T>(advancedSession, index, new MoreLikeThisQuery { DocumentId = documentId })); }
public static string[] GetRevisionIdsFor <T>(this ISyncAdvancedSessionOperation session, string id, int start, int pageSize) { var jsonDocuments = ((DocumentSession)session).DatabaseCommands.StartsWith(id + "/revisions/", null, start, pageSize, metadataOnly: true); return(jsonDocuments .Select(document => document.Key) .ToArray()); }
/// <summary> /// Returns all previous document revisions for specified document (with paging). /// </summary> public static T[] GetRevisionsFor <T>(this ISyncAdvancedSessionOperation session, string id, int start, int pageSize) { var getRevisionsOperation = new GetRevisionOperation(); var command = getRevisionsOperation.CreateRequest(id, start, pageSize); session.RequestExecuter.Execute(command, session.Context); return(ProcessResults <T>(session, command)); }
public static T[] MoreLikeThis <T, TIndexCreator>(this ISyncAdvancedSessionOperation advancedSession, string documentId) where TIndexCreator : AbstractIndexCreationTask, new() { var indexCreator = new TIndexCreator(); return(MoreLikeThis <T>(advancedSession, indexCreator.IndexName, new MoreLikeThisQuery { DocumentId = documentId })); }
public static T[] MoreLikeThis <TTransformer, T, TIndexCreator>(this ISyncAdvancedSessionOperation advancedSession, MoreLikeThisQuery parameters) where TIndexCreator : AbstractIndexCreationTask, new() where TTransformer : AbstractTransformerCreationTask, new() { var indexCreator = new TIndexCreator(); var transformer = new TTransformer(); return(MoreLikeThis <T>(advancedSession, indexCreator.IndexName, transformer.TransformerName, parameters)); }
public static T[] GetTemporalRevisionsFor <T>(this ISyncAdvancedSessionOperation session, string id, int start, int pageSize) { var inMemoryDocumentSessionOperations = ((InMemoryDocumentSessionOperations)session); var jsonDocuments = ((DocumentSession)session).DatabaseCommands.StartsWith(id + TemporalConstants.TemporalKeySeparator, null, start, pageSize); return(jsonDocuments .Select(inMemoryDocumentSessionOperations.TrackEntity <T>) .ToArray()); }
/// <summary> /// Returns all previous document revisions for specified document (with paging). /// </summary> public static T[] GetRevisionsFor <T>(this ISyncAdvancedSessionOperation session, string id, int start, int pageSize) { var inMemoryDocumentSessionOperations = ((InMemoryDocumentSessionOperations)session); var jsonDocuments = ((DocumentSession)session).DatabaseCommands.GetRevisionsFor(id, start, pageSize); return(jsonDocuments .Select(inMemoryDocumentSessionOperations.TrackEntity <T>) .ToArray()); }
public static T[] GetRevisionsFor <T>(this ISyncAdvancedSessionOperation session, string id, int start, int pageSize) { var inMemoryDocumentSessionOperations = ((InMemoryDocumentSessionOperations)session); var jsonDocuments = session.DatabaseCommands.StartsWith(id + "/revisions/", start, pageSize); return(jsonDocuments .Select(jsonDocument => inMemoryDocumentSessionOperations.TrackEntity <T>(jsonDocument.Key, jsonDocument.DataAsJson, jsonDocument.Metadata)) .ToArray()); }
public static DateTime?GetExpire <T>(this ISyncAdvancedSessionOperation advanced, T obj) { RavenJToken token; if (advanced.GetMetadataFor(obj).TryGetValue("Raven-Expiration-Date", out token)) { var date = token.Value <DateTime>(); return(date); } return(null); }
/// <summary> /// Gets the ancestors for a specific page /// </summary> /// <param name="session">The session.</param> /// <param name="page">The page.</param> /// <param name="includeStartPage">if set to <c>true</c> [include start page].</param> /// <returns></returns> /// <exception cref="System.NullReferenceException">StructureInfo</exception> public static IEnumerable <IPage> GetAncestorsFor(this ISyncAdvancedSessionOperation session, IPage page, bool includeStartPage = false) { try { var context = new BrickPileContext(HttpContext.Current.Request.RequestContext); if (context.Trie == null) { throw new NullReferenceException("The RouteData DataToken does not contains the Trie object"); } IEnumerable <TrieNode> nodes = context.Trie.GetAncestors(page.Id, includeStartPage); return(((DocumentSession)session).Load <IPage>(nodes.Select(n => n.PageId))); } catch (ArgumentNullException exception) {} return(null); }
/// <summary> /// Gets the parent for a specific page /// </summary> /// <typeparam name="T"></typeparam> /// <param name="session">The session.</param> /// <param name="page">The page.</param> /// <returns></returns> public static T GetParentFor <T>(this ISyncAdvancedSessionOperation session, IPage page) where T : IPage { if (page.Parent == null) { return(default(T)); } try { var context = new BrickPileContext(HttpContext.Current.Request.RequestContext); if (context.NavigationContext.OpenPages.Any(x => x.Id == page.Parent.Id)) { return((T)context.NavigationContext.OpenPages.Single(x => x.Id == page.Parent.Id)); } } catch (ArgumentNullException exception) {} return(page.Parent == null ? default(T) : ((DocumentSession)session).Load <T>(page.Parent.Id)); }
/// <summary> /// Gets the start page for BrickPile /// </summary> /// <param name="session">The session.</param> /// <returns></returns> /// <exception cref="System.NullReferenceException">StructureInfo</exception> public static IPage GetStartPage(this ISyncAdvancedSessionOperation session) { try { var context = new BrickPileContext(HttpContext.Current.Request.RequestContext); if (context.NavigationContext.StartPage != null) { return(context.NavigationContext.StartPage); } Trie trie = context.Trie; if (trie == null) { throw new NullReferenceException("The RouteData DataToken does not contains the Trie object."); } return(((DocumentSession)session).Load <Page>(trie.RootNode.PageId)); } catch (ArgumentNullException exception) {} return(null); }
public static T[] MoreLikeThis <T>(this ISyncAdvancedSessionOperation advancedSession, string index, string transformer, MoreLikeThisQuery parameters) { if (string.IsNullOrEmpty(index)) { throw new ArgumentException("Index name cannot be null or empty", "index"); } parameters.IndexName = index; parameters.Transformer = transformer; // /morelikethis/(index-name)/(ravendb-document-id)?fields=(fields) var cmd = ((DocumentSession)advancedSession).DatabaseCommands; var inMemoryDocumentSessionOperations = ((InMemoryDocumentSessionOperations)advancedSession); inMemoryDocumentSessionOperations.IncrementRequestCount(); var loadOperation = new LoadOperation(inMemoryDocumentSessionOperations, cmd.DisableAllCaching, null, null); LoadResult loadResult; do { loadOperation.LogOperation(); using (loadOperation.EnterLoadContext()) { var result = cmd.MoreLikeThis(parameters); loadResult = new LoadResult { Includes = result.Includes, Results = result.Results }; } } while (loadOperation.SetResult(loadResult)); return(loadOperation.Complete <T>()); }
public static T[] MoreLikeThis <T, TIndexCreator>(this ISyncAdvancedSessionOperation advancedSession, MoreLikeThisQueryParameters parameters) where TIndexCreator : AbstractIndexCreationTask, new() { var indexCreator = new TIndexCreator(); return(MoreLikeThis <T>(advancedSession, indexCreator.IndexName, parameters)); }
/// <summary> /// Gets the draft for a specific page, if it exists /// </summary> /// <typeparam name="T"></typeparam> /// <param name="session">The session.</param> /// <param name="page">The page.</param> /// <returns></returns> public static T GetDraftFor <T>(this ISyncAdvancedSessionOperation session, IPage page) { return(((DocumentSession)session).Load <T>(page.Id.Replace("/draft", "") + "/draft")); }
public static void AddExpire <T>(this ISyncAdvancedSessionOperation advanced, T obj, DateTime dateTime) { advanced.GetMetadataFor(obj)["Raven-Expiration-Date"] = new RavenJValue(dateTime); }
public static OperationAllowedResult IsOperationAllowedOnDocument(this ISyncAdvancedSessionOperation session, string userId, string operation, string documentId) { return(IsOperationAllowedOnDocument(session, userId, operation, new[] { documentId }).First()); }
public static TemporalMetadata GetTemporalMetadataFor <T>(this ISyncAdvancedSessionOperation session, T instance) { return(session.GetMetadataFor(instance).GetTemporalMetadata()); }
public static void RemoveExpire <T>(this ISyncAdvancedSessionOperation advanced, T obj) { advanced.GetMetadataFor(obj).Remove("Raven-Expiration-Date"); }