Use mongodb as backend database #1
No files matched your search
@@ -20,4 +20,8 @@
|
||||
<ProjectReference Include="..\RobotsWantedLeague\RobotsWantedLeague.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
||||
<ItemGroup>
|
||||
<Folder Include="Services\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,25 +0,0 @@
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
namespace RobotsWantedLeague.Test.Services;
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
using RobotsWantedLeague.Models;
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
using RobotsWantedLeague.Services;
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
[TestClass]
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
public class NotEmptyRobotsServiceTest
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
{
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
[TestMethod]
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
public void TestHappyPath()
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
{
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
IRobotsService service = new NotEmptyRobotsService();
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
Assert.AreEqual(3, service.Robots.Count);
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
Robot robot = service.CreateRobot("paul", 2, 3, "canada");
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
Assert.AreEqual(robot.Name, "paul");
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
Assert.AreEqual(robot.Weight, 2);
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
Assert.AreEqual(4, service.Robots.Count);
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
service.DeleteRobotById(robot.Id);
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
Assert.AreEqual(3, service.Robots.Count);
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
}
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
}
|
||||
|
It is hard to use mongodb and to write tests. The two solutions for this are
Both of these are relatively hard and I preferred to tests for now. It is hard to use mongodb and to write tests. The two solutions for this are
1. Write mocks and use in memory lists in tests
2. Use mongodb but clean the database between each test.
Both of these are relatively hard and I preferred to tests for now.
|
||||
@@ -1,65 +0,0 @@
|
||||
namespace RobotsWantedLeague.Test.Services;
|
||||
using RobotsWantedLeague.Models;
|
||||
using RobotsWantedLeague.Services;
|
||||
|
||||
[TestClass]
|
||||
public class RobotsServiceTest
|
||||
{
|
||||
|
||||
[TestMethod]
|
||||
public void TestCreateRobot()
|
||||
{
|
||||
RobotsService service = new RobotsService();
|
||||
Robot robot = service.CreateRobot("paul", 2, 3, "canada");
|
||||
Assert.AreEqual(robot.Name, "paul");
|
||||
Assert.AreEqual(robot.Weight, 2);
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
public void TestGetRobotById()
|
||||
{
|
||||
RobotsService service = new RobotsService();
|
||||
Assert.IsNull(service.GetRobotById(98));
|
||||
Robot robot = service.CreateRobot("paul", 2, 3, "canada");
|
||||
Robot? ret = service.GetRobotById(robot.Id);
|
||||
Assert.IsNotNull(ret);
|
||||
Assert.AreEqual(robot.Name, ret.Name);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestGetRobotById_MultipleRobots()
|
||||
{
|
||||
RobotsService service = new RobotsService();
|
||||
Robot robot1 = service.CreateRobot("paul", 2, 3, "canada");
|
||||
Robot robot2 = service.CreateRobot("emanuel", 20, 30, "france");
|
||||
Robot? ret = service.GetRobotById(robot2.Id);
|
||||
Assert.IsNotNull(ret);
|
||||
Assert.AreEqual(robot2.Name, ret.Name);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestListRobots()
|
||||
{
|
||||
RobotsService service = new RobotsService();
|
||||
Robot robot1 = service.CreateRobot("paul", 2, 3, "canada");
|
||||
Robot robot2 = service.CreateRobot("emanuel", 20, 30, "france");
|
||||
Assert.AreEqual(2, service.Robots.Count);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestDeleteRobotById()
|
||||
{
|
||||
RobotsService service = new RobotsService();
|
||||
Robot robot1 = service.CreateRobot("paul", 2, 3, "canada");
|
||||
Robot robot2 = service.CreateRobot("emanuel", 20, 30, "france");
|
||||
Robot robot3 = service.CreateRobot("xu", 1, 9, "chine");
|
||||
|
||||
Assert.IsTrue(service.DeleteRobotById(robot2.Id));
|
||||
|
||||
Assert.AreEqual(2, service.Robots.Count);
|
||||
Assert.IsNull(service.GetRobotById(robot2.Id));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -37,8 +37,8 @@ public class RobotsController : Controller
|
||||
return View(robotsService.Robots);
|
||||
}
|
||||
|
||||
public IActionResult Robot(int id){
|
||||
Robot robot = robotsService.GetRobotById(id);
|
||||
public IActionResult Robot(string id){
|
||||
|
With mongodb, robot Ids are now strings. With mongodb, robot Ids are now strings.
|
||||
Robot? robot = robotsService.GetRobotById(id);
|
||||
|
fixed typing. fixed typing.
|
||||
return View(robot);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
|
||||
namespace RobotsWantedLeague.Models;
|
||||
|
||||
public class Robot{
|
||||
public int Id { get; set;}
|
||||
|
||||
|
This is important. I add custom annotation to make sure the robot ID matches the _id in mongodb. This is important. I add custom annotation to make sure the robot ID matches the _id in mongodb.
|
||||
[BsonId]
|
||||
[BsonRepresentation(BsonType.ObjectId)]
|
||||
public string? Id { get; set;}
|
||||
|
||||
public string Name { get; set;}
|
||||
|
||||
/**
|
||||
@@ -16,7 +23,7 @@ public class Robot{
|
||||
|
||||
public string Country { get; set;}
|
||||
|
||||
public Robot(int Id, string Name, int Weight, int Height, string Country){
|
||||
public Robot(string? Id, string Name, int Weight, int Height, string Country){
|
||||
this.Id = Id;
|
||||
this.Name = Name;
|
||||
this.Weight = Weight;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
namespace RobotsWantedLeague.Models;
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
public class RobotsDatabaseSettings
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
{
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
public string ConnectionString { get; set; } = null!;
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
public string DatabaseName { get; set; } = null!;
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
public string RobotsCollectionName { get; set; } = null!;
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
}
|
||||
|
this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code. this is the configuration file for mongodb. It allows to extract the information from the application.json file into the proper code.
|
||||
@@ -1,9 +1,16 @@
|
||||
using RobotsWantedLeague.Models;
|
||||
using RobotsWantedLeague.Services;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// database settings
|
||||
|
||||
builder.Services.Configure<RobotsDatabaseSettings>(
|
||||
|
This is the important part of the config change. This is what is needed to wire up mongodb as an ASP service. This is the important part of the config change. This is what is needed to wire up mongodb as an ASP service.
|
||||
builder.Configuration.GetSection("RobotsDatabase"));
|
||||
|
||||
// Add services to the container.
|
||||
builder.Services.AddControllersWithViews();
|
||||
builder.Services.AddSingleton<RobotsService>();
|
||||
|
Little quirk to keep NotEmptyRobotsService working. Little quirk to keep NotEmptyRobotsService working.
|
||||
builder.Services.AddSingleton<IRobotsService, NotEmptyRobotsService>();
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
@@ -6,4 +6,13 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
This adds mongodb as a dependency to the project. This file was changed automagically via This adds mongodb as a dependency to the project. This file was changed automagically via
```shell
dotnet add package MongoDB.Driver
```
|
||||
<PackageReference Include="MongoDB.Driver" Version="2.21.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Entities\" />
|
||||
<Folder Include="Repositories\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -9,7 +9,7 @@ public interface IRobotsService{
|
||||
int height,
|
||||
string country);
|
||||
|
||||
public Robot? GetRobotById(int id);
|
||||
public Robot? GetRobotById(string id);
|
||||
|
Migrated ids from int to string. Migrated ids from int to string.
|
||||
|
||||
public bool DeleteRobotById(int id);
|
||||
public bool DeleteRobotById(string id);
|
||||
}
|
||||
@@ -1,3 +1,6 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace RobotsWantedLeague.Services;
|
||||
|
||||
using RobotsWantedLeague.Models;
|
||||
@@ -7,12 +10,22 @@ public class NotEmptyRobotsService: IRobotsService
|
||||
private readonly IRobotsService underlyingRobotsService;
|
||||
public List<Robot> Robots { get => underlyingRobotsService.Robots; }
|
||||
|
||||
public NotEmptyRobotsService()
|
||||
public NotEmptyRobotsService(RobotsService underlyingRobotsService)
|
||||
{
|
||||
this.underlyingRobotsService = new RobotsService();
|
||||
this.underlyingRobotsService = underlyingRobotsService;
|
||||
fillDefaultRobotsWhenUnderlyingRobotServiceIsEmpty();
|
||||
}
|
||||
|
||||
private void fillDefaultRobotsWhenUnderlyingRobotServiceIsEmpty()
|
||||
{
|
||||
if (underlyingRobotsService.Robots.Count() != 0)
|
||||
|
We changed a little bit how we build We changed a little bit how we build `NotEmptyRobotsService`. Now we ask ASP to auto wire the `RobotsService` for us. We need to do this because `RobotsService` depends on mongodb which can only be build via ASP auto wiring mechanism.
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.underlyingRobotsService.CreateRobot("Alice", 1050, 2, "Bhutan");
|
||||
this.underlyingRobotsService.CreateRobot("Bob", 5001, 5, "Vanuatu");
|
||||
this.underlyingRobotsService.CreateRobot("Xu", 890, 1, "Taiwan");
|
||||
|
||||
}
|
||||
|
||||
|
Made sure to only add new robots if the db is empty. Made sure to only add new robots if the db is empty.
|
||||
public Robot CreateRobot(string name,
|
||||
@@ -20,15 +33,16 @@ public class NotEmptyRobotsService: IRobotsService
|
||||
int height,
|
||||
string country)
|
||||
{
|
||||
return underlyingRobotsService.CreateRobot(name, weight, height, country);
|
||||
var robot = underlyingRobotsService.CreateRobot(name, weight, height, country);
|
||||
return robot;
|
||||
}
|
||||
|
||||
|
||||
public Robot? GetRobotById(int id){
|
||||
public Robot? GetRobotById(string id){
|
||||
return underlyingRobotsService.GetRobotById(id);
|
||||
}
|
||||
|
||||
public bool DeleteRobotById(int id){
|
||||
public bool DeleteRobotById(string id){
|
||||
return underlyingRobotsService.DeleteRobotById(id);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +1,25 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace RobotsWantedLeague.Services;
|
||||
|
||||
using RobotsWantedLeague.Models;
|
||||
|
||||
public class RobotsService: IRobotsService
|
||||
{
|
||||
private readonly List<Robot> robots;
|
||||
private int idGenerator = 0;
|
||||
public List<Robot> Robots { get => robots; }
|
||||
private readonly IMongoCollection<Robot> robotsCollection;
|
||||
|
||||
public RobotsService()
|
||||
public List<Robot> Robots { get => robotsCollection.AsQueryable().ToList(); }
|
||||
|
||||
|
So instead of a So instead of a `List<robot>` we now depend on a `IMongoCollection<Robot>`. The api of `IMongoCollection<Robot>` is quite nice.
|
||||
public RobotsService(IOptions<RobotsDatabaseSettings> bookStoreDatabaseSettings)
|
||||
{
|
||||
|
To return the list of all the robot we need to first fetch them. To return the list of all the robot we need to first fetch them. `robotsCollection.AsQueryable()` returns an object which is queryable via linq. The query here is empty (aka take all) and the method to realize the query is `ToList`.
|
||||
robots = new List<Robot>();
|
||||
}
|
||||
var mongoClient = new MongoClient(
|
||||
bookStoreDatabaseSettings.Value.ConnectionString);
|
||||
|
||||
private int generateId(){
|
||||
idGenerator = idGenerator + 1;
|
||||
return idGenerator;
|
||||
var mongoDatabase = mongoClient.GetDatabase(
|
||||
bookStoreDatabaseSettings.Value.DatabaseName);
|
||||
|
||||
this.robotsCollection = mongoDatabase.GetCollection<Robot>(bookStoreDatabaseSettings.Value.RobotsCollectionName);
|
||||
|
This is how we manage to build the This is how we manage to build the `IMongoCollection`. The only logic here is googlin g + copy/pasting
|
||||
}
|
||||
|
||||
public Robot CreateRobot(string name,
|
||||
@@ -23,37 +27,24 @@ public class RobotsService: IRobotsService
|
||||
int height,
|
||||
string country)
|
||||
{
|
||||
var robot = new Robot(generateId(), name, weight, height, country);
|
||||
robots.Add(robot);
|
||||
var robot = new Robot(null, name, weight, height, country);
|
||||
robotsCollection.InsertOne(robot);
|
||||
return robot;
|
||||
}
|
||||
|
||||
|
||||
private int getIndexOfRobotById(int id){
|
||||
int idx = 0;
|
||||
foreach (Robot robot in robots){
|
||||
if (robot.Id == id){
|
||||
return idx;
|
||||
}
|
||||
idx ++;
|
||||
}
|
||||
return -1;
|
||||
public Robot? GetRobotById(string id)
|
||||
{
|
||||
IQueryable<Robot> q = from robot in robotsCollection.AsQueryable()
|
||||
where robot.Id == id
|
||||
select robot;
|
||||
return q.First();
|
||||
}
|
||||
|
To insert, we now need to call InsertOne, as in mongodb To insert, we now need to call InsertOne, as in mongodb
|
||||
|
||||
public Robot? GetRobotById(int id){
|
||||
int indexToDelete = getIndexOfRobotById(id);
|
||||
if(indexToDelete == -1){
|
||||
return null;
|
||||
}
|
||||
return robots[indexToDelete];
|
||||
}
|
||||
|
||||
public bool DeleteRobotById(int id){
|
||||
int indexToDelete = getIndexOfRobotById(id);
|
||||
if(indexToDelete == -1){
|
||||
return false;
|
||||
}
|
||||
robots.RemoveAt(indexToDelete);
|
||||
return true;
|
||||
public bool DeleteRobotById(string id)
|
||||
{
|
||||
var res = robotsCollection.DeleteOne(robot => robot.Id == id);
|
||||
return res != null ;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -83,9 +83,6 @@
|
||||
</div>
|
||||
|
||||
<footer class="border-top footer text-muted">
|
||||
<div class="container">
|
||||
© 2023 - RobotsWantedLeague - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="~/lib/jquery/dist/jquery.min.js"></script>
|
||||
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
@@ -5,5 +5,10 @@
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"RobotsDatabase": {
|
||||
|
This is the configuration needed to run the program using a mongodb instance running locally on mongodb's default port. This is the configuration needed to run the program using a mongodb instance running locally on mongodb's default port.
|
||||
"ConnectionString": "mongodb://localhost:27017",
|
||||
"DatabaseName": "Robots",
|
||||
"RobotsCollectionName": "Robots"
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
No idea why this change is here. I hope it does not break anything.