Example #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="internalId"></param>
        /// <returns></returns>
        void GetListOfDocumentVersionsInternal(long docSpaceId, int internalId, DBreeze.Transactions.Transaction tran, List<int> res)
        {
            string DocTableName = DocumentsStorageTablesPrefix + "d" + docSpaceId.ToString();
            var vt = tran.SelectTable<int>(DocTableName, 3, 0);

            foreach (var row in vt.SelectForwardFromTo<byte[], byte>(
                                    internalId.To_4_bytes_array_BigEndian().ConcatMany(int.MinValue.To_4_bytes_array_BigEndian(), int.MinValue.To_4_bytes_array_BigEndian()), true,
                                    internalId.To_4_bytes_array_BigEndian().ConcatMany(int.MaxValue.To_4_bytes_array_BigEndian(), int.MaxValue.To_4_bytes_array_BigEndian()), true
                                    ))
                                {
                                   res.Add(row.Key.Substring(8,4).To_Int32_BigEndian());
                                }
        }
Example #2
0
        /// <summary>
        /// Function to be used inside of internal transaction
        /// </summary>
        /// <param name="tran"></param>
        /// <param name="documentSpace"></param>
        /// <returns></returns>
        public long InTran_GetDocumentSpaceId(DBreeze.Transactions.Transaction tran, string documentSpace)
        {
            var mt = tran.SelectTable<int>(DocumentsStorageTablesPrefix + "m", 1, 0);
            var docSpaceId = mt.Select<string, long>(documentSpace).Value;

            return docSpaceId;
        }
Example #3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="docSpaceId"></param>
        /// <param name="internalId"></param>
        /// <param name="includeContent"></param>
        /// <param name="includeSearchables"></param>
        /// <param name="tran"></param>
        /// <returns></returns>
        Document GetDocById(long docSpaceId, int internalId, bool includeContent, bool includeSearchables, DBreeze.Transactions.Transaction tran)
        {
            try
            {
                if (docSpaceId < 1 || internalId < 1)
                        return null;    //No such document

                string docTable = DocumentsStorageTablesPrefix + "d" + docSpaceId.ToString();

                //Getting latest document correct version
                string DocTableName = DocumentsStorageTablesPrefix + "d" + docSpaceId.ToString();
                var vt = tran.SelectTable<int>(DocTableName, 3, 0);
                int sequentialId = 0;

                foreach (var row1 in vt.SelectBackwardFromTo<byte[], byte>(
                                        internalId.To_4_bytes_array_BigEndian().ConcatMany(int.MaxValue.To_4_bytes_array_BigEndian(), int.MaxValue.To_4_bytes_array_BigEndian()), true,
                                        internalId.To_4_bytes_array_BigEndian().ConcatMany(int.MinValue.To_4_bytes_array_BigEndian(), int.MinValue.To_4_bytes_array_BigEndian()), true
                                        ))
                {
                    if (row1.Value == 1)    //Document is completely deleted
                        break;

                    //Getting the latest version of the document index
                    sequentialId = row1.Key.Substring(8, 4).To_Int32_BigEndian();

                    break;
                }

                if (sequentialId == 0)
                    return null;    //Probably Doc is deleted

                //Getting document using internalID
                var dt = tran.SelectTable<int>(docTable, 1, 0); //document table

                dt.ValuesLazyLoadingIsOn = false;
                var row = dt.Select<int, byte[]>(sequentialId);
                if (!row.Exists)
                    return null;    //No such document

                return RetrieveDocument(includeContent, includeSearchables, dt, row);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }