-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProductService.cs
36 lines (27 loc) · 1.21 KB
/
ProductService.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using Microsoft.Extensions.Options;
using MongoDB.Driver;
namespace VendingMachine_Logic;
public class ProductService
{
private readonly IMongoCollection<Product> _productsCollection;
public ProductService(
IOptions<VendingMachineDatabaseSettings> dbSettings)
{
var mongoClient = new MongoClient(
dbSettings.Value.ConnectionString);
var mongoDatabase = mongoClient.GetDatabase(
dbSettings.Value.DatabaseName);
_productsCollection = mongoDatabase.GetCollection<Product>(
dbSettings.Value.StockCollectionName);
}
public async Task<List<Product>> GetAsync() =>
await _productsCollection.Find(_ => true).ToListAsync();
public async Task<Product?> GetAsync(string id) =>
await _productsCollection.Find(x => x.Id == id).FirstOrDefaultAsync();
public async Task CreateAsync(Product newBook) =>
await _productsCollection.InsertOneAsync(newBook);
public async Task UpdateAsync(string id, Product updatedBook) =>
await _productsCollection.ReplaceOneAsync(x => x.Id == id, updatedBook);
public async Task RemoveAsync(string id) =>
await _productsCollection.DeleteOneAsync(x => x.Id == id);
}