From 8534ca139996893919cb6874166ef08fa346415a Mon Sep 17 00:00:00 2001 From: KerelOlivier Date: Tue, 24 May 2022 17:30:57 +0200 Subject: [PATCH] add: user service with CRUD operations --- Models/BlogDatabaseSettings.cs | 9 +++++++++ Program.cs | 3 +++ Services/UserService.cs | 32 ++++++++++++++++++++++++++++++++ appsettings.json | 8 ++++++++ 4 files changed, 52 insertions(+) create mode 100644 Models/BlogDatabaseSettings.cs diff --git a/Models/BlogDatabaseSettings.cs b/Models/BlogDatabaseSettings.cs new file mode 100644 index 0000000..2232e1c --- /dev/null +++ b/Models/BlogDatabaseSettings.cs @@ -0,0 +1,9 @@ +namespace backend.Models; + +public class BlogDatabaseSettings +{ + public string ConnectionString { get; set; } = null; + public string DatabaseName { get; set; } = null; + public string UsersCollectionName{ get; set; } = null; + public string PostsCollectionName { get; set; } = null; +} \ No newline at end of file diff --git a/Program.cs b/Program.cs index 15eacee..434bae8 100644 --- a/Program.cs +++ b/Program.cs @@ -1,8 +1,11 @@ +using backend.Models; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); +builder.Services.Configure(builder.Configuration.GetSection("BlogDatabase")); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); diff --git a/Services/UserService.cs b/Services/UserService.cs index b097f4e..c64d6d2 100644 --- a/Services/UserService.cs +++ b/Services/UserService.cs @@ -1,6 +1,38 @@ +using backend.Models; +using Microsoft.Extensions.Options; +using MongoDB.Driver; + namespace backend.Services; public class UserService { + private readonly IMongoCollection _users; + + public UserService(IOptions settings) + { + var client = new MongoClient(settings.Value.ConnectionString); + var database = client.GetDatabase(settings.Value.DatabaseName); + _users = database.GetCollection(settings.Value.UsersCollectionName); + } + + public async Task GetAsync(string id) + { + var user = await _users.Find(user => user.Id == id).FirstOrDefaultAsync(); + return user; + } + + public async Task CreateAsync(User user) + { + await _users.InsertOneAsync(user); + } + + public async Task RemoveAsync(string id) + { + await _users.DeleteOneAsync(user => user.Id == id); + } + public async Task UpdateAsync(string id, User userIn) + { + await _users.ReplaceOneAsync(user => user.Id == id, userIn); + } } \ No newline at end of file diff --git a/appsettings.json b/appsettings.json index 4d56694..95da7f2 100644 --- a/appsettings.json +++ b/appsettings.json @@ -1,4 +1,12 @@ { + "BlogDatabase": { + "ConnectionString": "mongodb://localhost:27017", + "DatabaseName": "Blog", + "UserCollectionName": "Users", + "PostCollectionName": "Posts" + + }, + "Logging": { "LogLevel": { "Default": "Information",