diff --git a/.drone.yml b/.drone.yml index e2b7e72..3fe44b0 100644 --- a/.drone.yml +++ b/.drone.yml @@ -18,10 +18,13 @@ steps: environment: ConnectionString: from_secret: ConnectionString + MySQLConnectionString: + from_secret: MySQLConnectionString commands: - chmod +x ./build.sh - ./build.sh - sed -i "s//$ConnectionString/g" output/appsettings.json + - sed -i "s//$MySQLConnectionString/g" output/appsettings.json - cp api.blog.service output/ - cp -r ./output/* /output - name: restart service diff --git a/src/Robware.Api.Blog/Controllers/BlogController.cs b/src/Robware.Api.Blog/Controllers/BlogController.cs index d67f8fb..4f40d05 100644 --- a/src/Robware.Api.Blog/Controllers/BlogController.cs +++ b/src/Robware.Api.Blog/Controllers/BlogController.cs @@ -1,7 +1,9 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; +using MongoDB.Driver; using Newtonsoft.Json; using Robware.Api.Blog.Models; using Robware.Blog; @@ -14,10 +16,12 @@ namespace Robware.Api.Blog.Controllers { private readonly ILogger _logger; private readonly IBlogRepository _blogRepository; + private readonly IDatabaseProvider _dbProvider; - public BlogController(ILogger logger, IBlogRepository blogRepository) { + public BlogController(ILogger logger, IBlogRepository blogRepository, IDatabaseProvider dbProvider) { _logger = logger; _blogRepository = blogRepository; + _dbProvider = dbProvider; } [HttpGet(nameof(Get) + "/{url}")] @@ -117,5 +121,16 @@ namespace Robware.Api.Blog.Controllers { return BadRequest("Tried to publish post that doesn't exist"); } } + + [HttpGet(nameof(Migrate))] + public async Task Migrate() { + var mysqlRepo = new Data.BlogRepository(_dbProvider); + + var existingPosts = await mysqlRepo.GetAllPostsAsync(); + foreach (var post in existingPosts) + await _blogRepository.SavePost(post); + + return Ok(); + } } } diff --git a/src/Robware.Api.Blog/Startup.cs b/src/Robware.Api.Blog/Startup.cs index 22fe03b..d75aa2e 100644 --- a/src/Robware.Api.Blog/Startup.cs +++ b/src/Robware.Api.Blog/Startup.cs @@ -3,8 +3,9 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using MongoDB.Driver; using Robware.Blog; -using Robware.Data; +using Robware.Data.MongoDB; namespace Robware.Api.Blog { public class Startup { @@ -19,10 +20,16 @@ namespace Robware.Api.Blog { services.AddControllers(); services - .AddSingleton(new MySQLDatabaseProvider(Configuration.GetConnectionString("database"))) + .AddSingleton(new Data.MySQLDatabaseProvider(Configuration.GetConnectionString("mysql"))) + .AddSingleton(SetupMongoDatabase()) .AddSingleton(); } + private IMongoDatabase SetupMongoDatabase() { + var client = new MongoClient(Configuration.GetConnectionString("database")); + return client.GetDatabase("robware"); + } + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { diff --git a/src/Robware.Api.Blog/appsettings.Development.json b/src/Robware.Api.Blog/appsettings.Development.json index 6daac7a..fbf999d 100644 --- a/src/Robware.Api.Blog/appsettings.Development.json +++ b/src/Robware.Api.Blog/appsettings.Development.json @@ -7,6 +7,6 @@ } }, "ConnectionStrings": { - "database": "Server=localhost;User ID=user;Password=pass;Database=db" + "database": "mongodb://localhost" } } diff --git a/src/Robware.Api.Blog/appsettings.json b/src/Robware.Api.Blog/appsettings.json index 0fd661d..5a4d3ac 100644 --- a/src/Robware.Api.Blog/appsettings.json +++ b/src/Robware.Api.Blog/appsettings.json @@ -15,6 +15,7 @@ } }, "ConnectionStrings": { - "database": "" + "database": "", + "mysql": "" } }