public Task Insert(DbVersion version, CancellationToken cancellationToken = default)
        {
            if (version == null)
            {
                throw new ArgumentNullException(nameof(version));
            }

            return(this.collection.InsertOneAsync(
                       version,
                       new InsertOneOptions {
                BypassDocumentValidation = false
            },
                       cancellationToken
                       ));
        }
Exemple #2
0
        private async Task ApplyScripts(CancellationToken cancellationToken)
        {
            var latest = await this.versionRepository.FindLatest(cancellationToken).ConfigureAwait(false);

            this.logger.LogInformation(1003, "Latest version: {0}", JsonConvert.SerializeObject(latest));

            foreach (var script in this.scripts.GetNext(latest?.Version))
            {
                this.logger.LogInformation(1004, "Applying script... version: {0}", script.Version);

                await script.Apply(cancellationToken).ConfigureAwait(false);

                var newVersion =
                    new DbVersion
                {
                    Id      = Guid.NewGuid().ToString("N"),
                    Version = script.Version
                };

                await this.versionRepository.Insert(newVersion, cancellationToken).ConfigureAwait(false);

                this.logger.LogInformation(1005, "Script applied: version: {0}", script.Version);
            }
        }