Exemple #1
0
        public static string Connect(Address host, string username = null, string password = null)
        {
            url = "http://";
            if (username != null && password != null)
            {
                haveCredentials = true;
                url            += Uri.EscapeDataString(username) + ":" + Uri.EscapeDataString(password) + "@";
            }
            else
            {
                haveCredentials = false;
            }
            url += host;
            Host = host;

            server       = new MyCouchServerClient(url);
            SDSStore     = new DataBase(url, "sds");
            CCSStore     = new DataBase(url, "ccs");            //client messages (and other changes, possibly; not right now)
            RCSStore     = new DataBase(url, "rcs");
            LogicStore   = new DataBase(url, "logic");
            ControlStore = new DataBase(url, "control");
            HostsStore   = new DataBase(url, "hosts");

            return(url);
        }
        private bool CreateDb()
        {
            if (string.IsNullOrEmpty(_couchDbSettings.Username) ||
                string.IsNullOrEmpty(_couchDbSettings.Password))
            {
                throw new CouchDbSetupException(
                          "Please add the admin username and password for the database to the CouchDbSettings in appsettings.json [DONT CHECK IT IN!!!]");
            }

            var connectionInfo = new ServerConnectionInfo(_couchDbSettings.Server)
            {
                BasicAuth = new BasicAuthString(_couchDbSettings.Username, _couchDbSettings.Password)
            };

            using (var client = new MyCouchServerClient(connectionInfo))
            {
                var databaseInfo = client.Databases.HeadAsync(_couchDbSettings.DatabaseName).Result;

                if (databaseInfo.IsSuccess)
                {
                    return(false);
                }

                var createResult = client.Databases.PutAsync(_couchDbSettings.DatabaseName).Result;

                if (!createResult.IsSuccess)
                {
                    throw new CouchDbSetupException(
                              $"unable to create database: {_couchDbSettings.DatabaseName} reason: {createResult.Reason}");
                }
                return(true);
            }
        }
Exemple #3
0
        void CreateDb(string dbName)
        {
            using var client = new MyCouchServerClient(CouchDbConnection.Current.ServerUrl);
            var resp = client.Databases.PutAsync(dbName).Result;

            if (!resp.IsSuccess)
            {
                throw new Exception(resp.Error + ":" + resp.Reason);
            }
        }
Exemple #4
0
        private void CreateDatabaseIfNotExists()
        {
            using (var couchDb = new MyCouchServerClient("http://*****:*****@localhost:5984"))
            {
                if (couchDb.Databases.GetAsync(_databaseName).Result.StatusCode == HttpStatusCode.OK)
                {
                    return;
                }

                var response = couchDb.Databases.PutAsync(_databaseName);

                response.Result.StatusCode.Should().Be(HttpStatusCode.Created);
            }
        }
        /// <summary>
        ///
        /// </summary>
        public CouchDbStore(string couchDbUrl)
        {
            if (string.IsNullOrEmpty(couchDbUrl))
            {
                throw new ArgumentException($"couchDbUrl parameter must not be null or empty.");
            }

            var dbConnectionInfo = new DbConnectionInfo(couchDbUrl, EntityName);

            Client = new MyCouchClient(dbConnectionInfo);

            CouchServerClient = new MyCouchServerClient(couchDbUrl);

            Store = new MyCouchStore(Client);
        }
        public CouchDbStoreBase(string database)
        {
            _database = database;

            using (var client = new MyCouchServerClient(SERVER))
            {
                var d = client.Databases.PutAsync(_database).Result;

                if (!client.Databases.HeadAsync(_database).Result.IsSuccess)
                {
                    throw new Exception($"Database '{_database}' not found!");
                }
            }

            Store = new MyCouchStore(SERVER, _database);
        }
Exemple #7
0
        private void CreateDatabaseIfNotExists()
        {
            using (var couchDb = new MyCouchServerClient(_couchDbSettings.DatabaseUri))
            {
                if (couchDb.Databases.GetAsync(_couchDbSettings.DatabaseName).Result.StatusCode == HttpStatusCode.OK)
                {
                    return;
                }

                var response = couchDb.Databases.PutAsync(_couchDbSettings.DatabaseName);

                if (response.Result.StatusCode != HttpStatusCode.Created)
                {
                    throw new InvalidOperationException("Unable to create database");
                }
            }
        }
        public CommentService()
        {
            using (var client = new MyCouchServerClient(SERVER))
            {
                var d = client.Databases.PutAsync(DATABASE).Result;

                if (!client.Databases.HeadAsync(DATABASE).Result.IsSuccess)
                {
                    throw new Exception($"Database '{DATABASE}' not found!");
                }
            }

            using (var client = new MyCouchClient(SERVER, DATABASE))
            {
                if (!client.Documents.HeadAsync("_design/comments").Result.IsSuccess)
                {
                    var assembly = Assembly.GetExecutingAssembly();
                    var docName  = "SocketComment.DesignDocuments.Comments.json";
                    using (Stream stream = assembly.GetManifestResourceStream(docName))
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            string docString = reader.ReadToEnd();

                            if (string.IsNullOrWhiteSpace(docString))
                            {
                                throw new Exception("Failed to load document json file");
                            }

                            var doc = client.Documents.PostAsync(docString).Result;

                            if (!doc.IsSuccess)
                            {
                                throw new Exception("Failed to setup default view document");
                            }
                        }
                }
            }

            _commentStore = new MyCouchStore(SERVER, DATABASE);
            _commentCache = CacheFactory.Build <Comment>(settings =>
            {
                settings.WithMicrosoftMemoryCacheHandle();
            });
        }
Exemple #9
0
        private async Task prepareDB()
        {
            using (var client = new MyCouchServerClient("http://localhost:5984"))
            {
                var test = await client.Databases.GetAsync(new GetDatabaseRequest("tasks"));

                if (!test.IsSuccess && test.Reason == "not_found")
                {
                    await client.Databases.PutAsync(new PutDatabaseRequest("tasks"));
                }
            }

            using (var client = new MyCouchClient("http://localhost:5984", "tasks"))
            {
                var viewResponse = await client.Documents.GetAsync(new GetDocumentRequest("_design/views"));

                if (!viewResponse.IsSuccess && viewResponse.Error == "not_found")
                {
                    var designDocument = new PostDocumentRequest("{\n  \"_id\": \"_design/views\",\n  \"_rev\": \"13-e7f20fd89680fba468de1b2d2bfaffdc\",\n  \"views\": {\n    \"allDocs\": {\n      \"map\": \"function (doc) {\\n  emit(doc._id, doc._rev);\\n}\"\n    },\n    \"TasksByName\": {\n      \"map\": \"function(doc) {\\r\\nif (\'name\' in doc) { \\r\\n    emit(doc.name, doc._id);\\r\\n  }\\r\\n} \\r\\n\"\n    },\n    \"byTag\": {\n      \"reduce\": \"_count\",\n      \"map\": \"function (doc) {\\n  emit(doc.tag, 1);\\n}\"\n    },\n    \"byIsDone\": {\n      \"map\": \"function (doc) {\\n  emit(doc.isDone, 1);\\n}\",\n      \"reduce\": \"_count\"\n    }\n  },\n  \"language\": \"javascript\"\n}");

                    await client.Documents.PostAsync(designDocument);
                }
            }
        }