private void SetThreadCollectionData(PostsTable.ViewValues.PostCollectionLoadInfoView v, PostModelStoreThreadCollection data, ref BasicEntityInfo bi)
 {
     SetBareEntityData(v, data, ref bi);
     data.Etag  = v.Etag;
     data.Info  = ObjectSerializationService.Deserialize(v.OtherDataBinary) as IBoardPostCollectionInfoSet;
     data.Stage = v.ChildrenLoadStage;
 }
        private void SetPostData(IEsentSession session, ref LoadPostDataContext loadContext, PostsTable.ViewValues.PostFullLoadView v, bool getPostCount, PostModelStorePost data, ref BasicEntityInfo bi)
        {
            SetPostLightData(session, v, getPostCount, data, ref bi);
            var posterName = v.PosterName;
            var otherData  = DeserializeDataContract <PostOtherData>(v.OtherDataBinary);

            otherData?.FillPostData(data, LinkSerialization, posterName);
            data.Comment    = ObjectSerializationService.Deserialize(v.Document) as IPostDocument;
            data.LoadedTime = FromUtcToOffset(v.LoadedTime) ?? DateTimeOffset.MinValue;
            data.MediaFiles = LoadPostMedia(loadContext.mediaTable ?? throw new InvalidOperationException("Таблица медиафайлов не открыта"), ref bi, false);
            data.Quotes     = LoadQuotesForPost(loadContext.quotesTable ?? throw new InvalidOperationException("Таблица цитат не открыта"), false, ref bi);
        }
 private void SetBareEntityData(PostsTable.ViewValues.BareEntityLoadInfoView v, PostModelStoreBareEntity data, ref BasicEntityInfo bi)
 {
     LoadBasicInfo(v, ref bi);
     data.EntityType    = bi.entityType;
     data.Link          = bi.link;
     data.ParentLink    = bi.parentLink;
     data.Thumbnail     = ObjectSerializationService.Deserialize(v.Thumbnail) as IPostMediaWithSize;
     data.Subject       = v.Subject;
     data.StoreId       = bi.entityId;
     data.StoreParentId = bi.parentEntityId;
     if (data is IBoardPostEntityWithSequence2 s)
     {
         s.SetOnPageSequence(v.ThreadPreviewSequence ?? int.MaxValue);
     }
 }
        private List <IPostMedia> LoadPostMedia(MediaFilesTable mediaTable, ref BasicEntityInfo bi, bool setIndex)
        {
            var r     = new List <IPostMedia>();
            var index = mediaTable.Indexes.SequencesIndex;

            if (setIndex)
            {
                index.SetAsCurrentIndex();
            }
            foreach (var md in index.EnumerateAsMediaDataView(index.CreateKey(bi.entityId.Id)))
            {
                var m = ObjectSerializationService.Deserialize(md.MediaData) as IPostMedia;
                if (m != null)
                {
                    r.Add(m);
                }
            }
            return(r);
        }