Browse Source

add: user service with CRUD operations

Users
KerelOlivier 2 years ago
parent
commit
8534ca1399
  1. 9
      Models/BlogDatabaseSettings.cs
  2. 3
      Program.cs
  3. 32
      Services/UserService.cs
  4. 8
      appsettings.json

9
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;
}

3
Program.cs

@ -1,8 +1,11 @@
using backend.Models;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
// Add services to the container. // Add services to the container.
builder.Services.AddControllers(); builder.Services.AddControllers();
builder.Services.Configure<BlogDatabaseSettings>(builder.Configuration.GetSection("BlogDatabase"));
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer(); builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(); builder.Services.AddSwaggerGen();

32
Services/UserService.cs

@ -1,6 +1,38 @@
using backend.Models;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
namespace backend.Services; namespace backend.Services;
public class UserService public class UserService
{ {
private readonly IMongoCollection<User> _users;
public UserService(IOptions<BlogDatabaseSettings> settings)
{
var client = new MongoClient(settings.Value.ConnectionString);
var database = client.GetDatabase(settings.Value.DatabaseName);
_users = database.GetCollection<User>(settings.Value.UsersCollectionName);
}
public async Task<User?> 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);
}
} }

8
appsettings.json

@ -1,4 +1,12 @@
{ {
"BlogDatabase": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "Blog",
"UserCollectionName": "Users",
"PostCollectionName": "Posts"
},
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Information",

Loading…
Cancel
Save