Example #1
0
        private void Init()
        {
            string dir = DirHandler.CreateDirInRootApp("data", "dbs");

            PathDirRootDataBases = Path.Combine(dir, _databaseName);

            ConnectionString = new ConnectionString()
            {
                Filename   = PathDirRootDataBases,
                Connection = ConnectionType.Shared,//TODO: is it best solution? Probati sa ConnectionType.Direct
                //ReadOnly = true
            };

            using var db      = new LiteDatabase(ConnectionString);
            DocumentTermsColl = db.GetCollection <DocumentTermsData>(DocumentTerms);
            DocumentTermsColl.EnsureIndex(nameof(DocumentTermsData.Document), true);//+ SP: staviti da je dokument id unique - ispitati ima li problema negdje radi toga
            //Example using multi key index https://github.com/mbdavid/LiteDB/blob/master/LiteDB.Tests/Database/MultiKey_Mapper_Tests.cs - 2020-12-28T10:14:38
            DocumentTermsColl.EnsureIndex(d => d.Terms.Select(z => z.Term));

            TermDocumentCountColl = db.GetCollection <TermDocumentCountData>(TermDocumentCount);
            TermDocumentCountColl.EnsureIndex(nameof(TermDocumentCountData.Term));

            TermDocumentColl = db.GetCollection <TermDocumentData>(TermDocument);
            TermDocumentColl.EnsureIndex(nameof(TermDocumentData.Term));
        }
Example #2
0
 /// <summary>
 /// Insert new documetn in storage.
 /// </summary>
 /// <param name="documentTermsData"></param>
 /// <returns>Return new Id of new document </returns>
 public string PostDocumentTerms(DocumentTermsData documentTermsData)
 {
     lock (_lockerDocumentTermsColl)
     {
         return(DocumentTermsColl.Insert(documentTermsData));
     }
 }
Example #3
0
 /// <summary>
 /// Reduce number for each count in TermDocumentCountColl {term, count}
 /// Delete  {Document, List<TermData>} from  DocumentTermsColl
 /// ?Delete { term, documentId} from TermDocumentColl
 /// 2020-12-23T10:12:38
 /// </summary>
 /// <param name="documentId"></param>
 /// <returns></returns>
 public bool DeleteDocument(string documentId)
 {
     lock (_lockerDocumentTermsColl)
     {
         DocumentTermsData documentTermsData = DocumentTermsColl.FindOne(d => d.Document == documentId);
         if (documentTermsData != null)
         {
             //Reduce number for each count in TermDocumentCountColl {term, count}
             lock (_lockerTermDocumentCountColl)
             {
                 foreach (TermData termData in documentTermsData.Terms)
                 {
                     TermDocumentCountData termDocumentCountData = TermDocumentCountColl.FindOne(d => d.Term == termData.Term);
                     if (termDocumentCountData != null)
                     {
                         termDocumentCountData.Count--;
                         TermDocumentCountColl.Update(termDocumentCountData);
                     }
                 }
                 //Delete  {Document, List<TermData>} from  DocumentTermsColl
                 return(DocumentTermsColl.Delete(documentTermsData.Id));
             }
         }
         return(false);
     }
 }
Example #4
0
 public int CountDocumentTerms(string document)
 {
     lock (_lockerDocumentTermsColl)
     {
         return(DocumentTermsColl.Count());
     }
 }
Example #5
0
        // Region for all method of collection DocumentTermsColl
        #region DocumentTermsColl

        /// <summary>
        /// Get one DocumentTermsData filtered by document id.
        /// 2020-11-08T18:07:18
        /// </summary>
        /// <param name="document"></param>
        /// <returns></returns>
        public DocumentTermsData GetDocumentTerm(string document)
        {
            lock (_lockerDocumentTermsColl)
            {
                return(DocumentTermsColl.FindOne(x => x.Document == document));
            }
        }