Able to create and read data from the DB

This commit is contained in:
kdeng00
2023-09-26 06:28:45 -04:00
parent b8a9142f05
commit 8f090bd2e2
5 changed files with 63 additions and 9 deletions
+30 -3
View File
@@ -1,6 +1,9 @@
using System.Linq;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using TextSender_API.Models; using TextSender_API.Models;
using TextSender_API.Repositories;
namespace TextSender_API.Controllers; namespace TextSender_API.Controllers;
@@ -10,22 +13,46 @@ public class RegisterController : ControllerBase
{ {
#region Fields #region Fields
private readonly ILogger<RegisterController> _logger; private readonly ILogger<RegisterController> _logger;
private IConfiguration _config;
#endregion #endregion
#region Constructors #region Constructors
public RegisterController(ILogger<RegisterController> logger) public RegisterController(ILogger<RegisterController> logger, IConfiguration config)
{ {
this._logger = logger; this._logger = logger;
this._config = config;
} }
#endregion #endregion
#region Methods #region Methods
[HttpPost("register"), DisableRequestSizeLimit] [HttpPost("register"), DisableRequestSizeLimit]
public IActionResult Upload([FromForm(Name = "file")] List<IFormFile> contactFile, public IActionResult Upload([FromBody] User userRequest)
[FromForm(Name = "user_id")] string userID)
{ {
try
{
var connString = this._config.GetConnectionString("MongoDBURI");
var userRepo = new UserRepository(connString);
var allUsers = userRepo.RetrieveAllUsers();
var result = allUsers.Exists(ea => ea.Username.Equals(userRequest.Username));
if (!result)
{
this._logger.LogInformation("Creating user");
userRequest.DateCreated = DateTime.Now;
userRepo.CreateUser(userRequest);
}
else
{
this._logger.LogInformation("User already exists");
}
}
catch (Exception ex)
{
this._logger.LogError($"An error occurred: {ex.Message}");
}
return Ok(); return Ok();
} }
#endregion #endregion
+4 -2
View File
@@ -2,6 +2,7 @@ using System;
using MongoDB.Bson; using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Bson.Serialization.Conventions;
using MongoDB.Driver; using MongoDB.Driver;
namespace TextSender_API.Models; namespace TextSender_API.Models;
@@ -9,8 +10,9 @@ namespace TextSender_API.Models;
public class User public class User
{ {
#region Properties #region Properties
// [BsonElement("_id")] [BsonId]
public ObjectId Id { get; set; } [BsonRepresentation(BsonType.ObjectId)]
public string? Id { get; set; }
[BsonElement("firstname")] [BsonElement("firstname")]
public string? Firstname { get; set; } public string? Firstname { get; set; }
[BsonElement("lastname")] [BsonElement("lastname")]
+5
View File
@@ -1,8 +1,12 @@
using Newtonsoft.Json;
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.AddControllers().AddNewtonsoftJson();
// 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();
@@ -16,6 +20,7 @@ if (app.Environment.IsDevelopment())
app.UseSwaggerUI(); app.UseSwaggerUI();
} }
app.UseHttpsRedirection(); app.UseHttpsRedirection();
app.UseAuthorization(); app.UseAuthorization();
+23 -4
View File
@@ -14,6 +14,7 @@ public class UserRepository
private string _connectionString; private string _connectionString;
private string _databaseName; private string _databaseName;
private string _tableName; private string _tableName;
private readonly IMongoCollection<User> _bookCollection;
#endregion #endregion
@@ -23,17 +24,35 @@ public class UserRepository
this._connectionString = connectionString; this._connectionString = connectionString;
this._databaseName = "TextSender"; this._databaseName = "TextSender";
this._tableName = "Users"; this._tableName = "Users";
var client = this.InitializeClient();
this._bookCollection = client.GetDatabase(this._databaseName).GetCollection<User>(this._tableName);
} }
#endregion #endregion
#region Metods #region Metods
public void CreateUser(User user) public void CreateUser(User user)
{ {
var client = this.InitializeClient(); this._bookCollection.InsertOne(user);
var i = 0;
var coll = client.GetDatabase(this._databaseName).GetCollection<User>(this._tableName);
coll.InsertOne(user);
} }
public List<User> RetrieveAllUsers()
{
return this._bookCollection.Find(_ => true).ToList();
}
public void Update(User user)
{
var filter = Builders<User>.Filter.Eq(u => u.Id, user.Id);
this._bookCollection.ReplaceOne(filter, user);
}
public void Delete(User user)
{
var filter = Builders<User>.Filter.Eq(u => u.Id, user.Id);
this._bookCollection.DeleteOne(filter);
}
private MongoClient InitializeClient() private MongoClient InitializeClient()
{ {
return new MongoClient(this._connectionString); return new MongoClient(this._connectionString);
+1
View File
@@ -8,6 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.11" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.11" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.11" />
<PackageReference Include="MongoDB.Driver" Version="2.21.0" /> <PackageReference Include="MongoDB.Driver" Version="2.21.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />