Example #1
0
        public async Task <HealthCheckResult> CheckHealthAsync(
            HealthCheckContext context,
            CancellationToken cancellationToken = default)
        {
            try
            {
                var store = _options.GetDocumentStore(null);

                var operation     = new GetDatabaseNamesOperation(start: 0, pageSize: 100);
                var databaseNames = await store.Maintenance.Server.SendAsync(operation);

                if (!string.IsNullOrWhiteSpace(_options.Settings.DatabaseName) &&
                    !databaseNames.Contains(_options.Settings.DatabaseName, StringComparer.OrdinalIgnoreCase))
                {
                    return(new HealthCheckResult(
                               context.Registration.FailureStatus,
                               $"RavenDB doesn't contains '{_options.Settings.DatabaseName}' database."));
                }
                else
                {
                    return(HealthCheckResult.Healthy("Chavah database is operational."));
                }
            }
            catch (Exception ex)
            {
                return(new HealthCheckResult(
                           context.Registration.FailureStatus,
                           description: "Chavah database is down",
                           exception: ex));
            }
        }
Example #2
0
        public List <DatabaseCollection> GetDatabaseNames()
        {
            try
            {
                var      operation     = new GetDatabaseNamesOperation(0, 25);
                string[] databaseNames = Store.Maintenance.Server.Send(operation);
                Databases = new List <DatabaseCollection>();
                foreach (string item in databaseNames)
                {
                    DatabaseCollection t = new DatabaseCollection();
                    t.DatabasName = item;
                    t.Collections = GetCollection(item);

                    foreach (string col in t.Collections)
                    {
                        ConnProp.Entities.Add(GetEntityStructure(col.Remove(col.Length, 1), t.DatabasName));
                    }
                }

                return(Databases);
            }
            catch (Exception ex)
            {
                DME_Editor.AddLogMessage("Error", "Could not Get Databases From RavenDB " + ConnProp.ConnectionName, DateTime.Now, -1, ConnProp.Url, Errors.Failed);
                return(null);
            }
        }
        public static DocumentStore GetDocumentStore(string url = null)
        {
            if (url is null)
            {
                url = "http://localhost:8080";
            }

            var dataBase = "kairos";
            var store    = new DocumentStore {
                Urls = new[] { url }, Database = dataBase
            };

            store.Initialize();

            var operation = new GetDatabaseNamesOperation(0, 10);
            var databases = store.Maintenance.Server.Send(operation);

            if (!databases.Contains(dataBase))
            {
                var createDb = new CreateDatabaseOperation(new DatabaseRecord(dataBase));
                store.Maintenance.Server.Send(createDb);
            }

            new ListFeedEventAggregatedIndex().Execute(store);

            return(store);
        }
Example #4
0
 public void Foo()
 {
     using (var store = new DocumentStore())
     {
         #region get_db_names_sample
         var      operation     = new GetDatabaseNamesOperation(0, 25);
         string[] databaseNames = store.Maintenance.Server.Send(operation);
         #endregion
     }
 }
Example #5
0
        public static void TestEnvironmentInitialization()
        {
            Environment.SetEnvironmentVariable("CODE_COVERAGE_SESSION_NAME", null);
            EmbeddedServer.Instance.StartServer(new ServerOptions
            {
                FrameworkVersion = "2.2.8",
                ServerUrl        = DatabaseConnectionString,
            });

            DatabaseConnectionString = EmbeddedServer.Instance.GetServerUriAsync().GetAwaiter().GetResult().ToString();
            var store = EmbeddedServer.Instance.GetDocumentStore(new DatabaseOptions(_databaseName));

            store.Maintenance.Server.Send(new DeleteDatabasesOperation(store.Database, hardDelete: true));

            string[] databaseNames;
            do
            {
                var operation = new GetDatabaseNamesOperation(0, 25);
                databaseNames = store.Maintenance.Server.Send(operation);
            } while (databaseNames.Contains(store.Database));

            store.EnsureDatabaseExists(_databaseName, configureRecord: r =>
            {
                r.Revisions = new RevisionsConfiguration()
                {
                    Default = new RevisionsCollectionConfiguration
                    {
                        Disabled                 = false,
                        PurgeOnDelete            = false,
                        MinimumRevisionsToKeep   = null,
                        MinimumRevisionAgeToKeep = null,
                    },
                    Collections = new System.Collections.Generic.Dictionary <string, RevisionsCollectionConfiguration>
                    {
                        { "@Outbox", new RevisionsCollectionConfiguration {
                              Disabled = true
                          } }
                    }
                };
            });

            _documentStore = store;


            //EmbeddedServer.Instance.StartServer(new ServerOptions
            //{
            //	ServerUrl = DatabaseConnectionString,
            //});

            //_documentStore = EmbeddedServer.Instance.GetDocumentStore(new DatabaseOptions(_databaseName));

            //_documentStore.DeleteDatabaseWithName(_databaseName);
        }
Example #6
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                if (!_isNotCompleted)
                {
                    break;
                }

                try
                {
                    var docStore = new DocumentStore
                    {
                        Urls     = new[] { _settings.Url },
                        Database = _settings.Name
                    };

                    docStore.Initialize();

                    var operation     = new GetDatabaseNamesOperation(0, 1000); // 1000 is safe enough for me.
                    var databaseNames = docStore.Maintenance.Server.Send(operation);

                    docStore.Maintenance.Server.Send(new CreateDatabaseOperation(new DatabaseRecord(_settings.Name)));

                    var importOperation = await docStore.Smuggler.ImportAsync(new DatabaseSmugglerImportOptions
                    {
                        OperateOnTypes = DatabaseItemType.Documents
                    }, _importFilePath, stoppingToken);

                    await importOperation.WaitForCompletionAsync();

                    _logger.LogInformation("Completed the import...");
                    _isNotCompleted = false;

                    break;
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("already exists"))
                    {
                        _isNotCompleted = false;
                    }
                    _logger.LogError(ex.Message);
                }

                _retries += 1;
                _logger.LogDebug("Retrying to import: {retries}", _retries);

                await Task.Delay(TimeSpan.FromSeconds(15), stoppingToken);
            }
        }
Example #7
0
        public static IDocumentStore DeleteDatabaseWithName(this IDocumentStore store, string database)
        {
            database = database ?? store.Database;

            store.Maintenance.Server.Send(new DeleteDatabasesOperation(database, hardDelete: true));

            string[] databaseNames;
            do
            {
                var operation = new GetDatabaseNamesOperation(0, 25);
                databaseNames = store.Maintenance.Server.Send(operation);
            } while (databaseNames.Contains(database));

            return(store);
        }
Example #8
0
        public async Task <List <string> > GetDatabaseNames(IDocumentStore documentStore)
        {
            const int pageSize = 50;
            var       results  = new List <string>();

            string[] dbNames;
            var      start = 0;

            do
            {
                var operation = new GetDatabaseNamesOperation(start, pageSize);
                dbNames = await documentStore.Maintenance.Server.SendAsync(operation);

                results.AddRange(dbNames);
                start += pageSize;
            }while (dbNames.Length > 0);

            return(results);
        }
        public static void LoadDatabase(string url = null)
        {
            if (url is null)
            {
                url = "http://raven_db:8080";
            }

            var store = new DocumentStore {
                Urls = new[] { url }, Database = DataBase
            };

            store.Initialize();

            var operation = new GetDatabaseNamesOperation(0, 100);
            var databases = store.Maintenance.Server.Send(operation);

            if (!databases.Contains(DataBase))
            {
                var createDb = new CreateDatabaseOperation(new DatabaseRecord(DataBase));
                store.Maintenance.Server.Send(createDb);
            }

            new LimitUsedIndex().Execute(store);
        }