A simple wrapper class for the CouchDB HTTP API. No initialisation is necessary, just create an instance and call the appropriate methods to interact with CouchDB. All methods throw exceptions when things go wrong.
Ejemplo n.º 1
0
        public long ReplicateWith(string server, string database, bool reset = false)
        {
            long docsSync = 0;

            RemoteDB remoteDB = new RemoteDB();

            long lastSync = GetLastSync(server + "/" + database);

            if (reset)
            {
                lastSync = 0;
            }
            JsonData docs = remoteDB.GetChanges(server, database, true, lastSync);

            foreach (JsonData result in docs["results"])
            {
                string id  = (string)result["id"];
                string rev = (string)result["changes"][0]["rev"];
                //    //result.Remove("_rev");
                //    //result.Remove("_id");

                string doc = result["doc"].ToJson();

                try
                {
                    PutDoc(id, doc, rev);
                }
                catch (Exception ee)
                {
                    Debug.WriteLine(ee.ToString());
                }
            }
            docsSync = docs["results"].Count;
            ///Debug.WriteLine("Document sync: " + docs.results.Count);
            ////Debug.WriteLine(AllDocs());
            SetLastSync(server + "/" + database, (int)docs["last_seq"]);

            docs     = null;
            remoteDB = null;

            return(docsSync);
        }
Ejemplo n.º 2
0
        public void ReplicationTest()
        {
            RemoteDB remoteDB = new RemoteDB();

            //DocInfo[] info = remoteDB.GetAllDocuments("http://127.0.0.1:5984", "test");

            NouchDB nouchDB = new NouchDB();
            //nouchDB.Delete(new Options());
            //Debug.WriteLine(nouchDB.Changes());
            //string res = RevsDiff(nouchDB, remoteDB, info);
            //res = "{\"keys\":" + res + "}";

            long lastSync = nouchDB.GetLastSync("http://127.0.0.1:5984/test");

            JsonData  docs = remoteDB.GetChanges("http://127.0.0.1:5984", "test", true, lastSync);

            foreach (JsonData result in docs["results"])
            {
                string id = (string) result["id"];
                string rev = (string) result["changes"][0]["rev"];
            //    //result.Remove("_rev");
            //    //result.Remove("_id");

                string doc = result["doc"].ToJson() ;

                try
                {
                    nouchDB.PutDoc(id, doc, rev);
                }
                catch (Exception ee)
                {
                    Debug.WriteLine(ee.ToString());
                }
            }

            Debug.WriteLine("Document sync: " + docs["results"].Count);
            Debug.WriteLine(nouchDB.AllDocs());
            nouchDB.SetLastSync("http://127.0.0.1:5984/test",(int) docs["last_seq"]);

            //nouchDB.Close();
        }
Ejemplo n.º 3
0
        public string RevsDiff(NDB.NouchDB db, RemoteDB remoteDB, DocInfo[] docInfo)
        {
            var result = "[";
            Dictionary<string,string> docList = new Dictionary<string,string>();

            for (int f = 0; f < docInfo.Length; f++ )
            {
                DocInfo remoteDoc = docInfo[f];
                long revision = Convert.ToInt64(remoteDoc.Revision.Split('-')[0]);
                Node localDoc = db.GetDocInfo(remoteDoc.ID);

                if (localDoc == null)
                {
                    if (Convert.ToInt64(localDoc.currentVersion) < revision)
                    {
                        if (!docList.ContainsKey(remoteDoc.ID))
                        {
                            docList.Add(remoteDoc.ID,"");
                        }
                    }

                }
                else
                {
                    if (!docList.ContainsKey(remoteDoc.ID))
                    {
                        docList.Add(remoteDoc.ID, "");
                    }
                }

            }

            return JsonMapper.ToJson(docList.Keys);
        }
Ejemplo n.º 4
0
 public void RemoteTest()
 {
     RemoteDB remoteDB = new RemoteDB();
     remoteDB.GetAllDocuments("http://127.0.0.1:5984", "test");
 }
Ejemplo n.º 5
0
        public long ReplicateWith(string server, string database, bool reset = false)
        {
            long docsSync = 0;

            RemoteDB remoteDB = new RemoteDB();

            long lastSync = GetLastSync(server+"/"+database);
            if (reset)
            {
                lastSync = 0;
            }
            JsonData docs = remoteDB.GetChanges(server, database, true, lastSync);

            foreach (JsonData result in docs["results"])
            {
                string id = (string)result["id"];
                string rev = (string)result["changes"][0]["rev"];
                //    //result.Remove("_rev");
                //    //result.Remove("_id");

                string doc = result["doc"].ToJson();

                try
                {
                    PutDoc(id, doc, rev);
                }
                catch (Exception ee)
                {
                    Debug.WriteLine(ee.ToString());
                }

            }
            docsSync = docs["results"].Count;
            ///Debug.WriteLine("Document sync: " + docs.results.Count);
            ////Debug.WriteLine(AllDocs());
            SetLastSync(server+"/"+database,(int)docs["last_seq"]);

            docs = null;
            remoteDB = null;

            return docsSync;
        }