using System; using System.Collections.Generic; using System.Threading.Tasks; using MongoDB.Bson; using MongoDB.Driver; using weddingapi.Models; namespace weddingapi.Repositories { public class MongoDBContactUsRepository : IContactRepository { private const string databaseName = "wedding"; private const string collectionName = "contacts"; private readonly IMongoCollection familyCollection; private readonly FilterDefinitionBuilder filterBuilder = Builders.Filter; public MongoDBContactUsRepository(IMongoClient mongoClient) { IMongoDatabase database = mongoClient.GetDatabase(databaseName); familyCollection = database.GetCollection(collectionName); } public async Task CreateContactAsync(Contact contact) { await familyCollection.InsertOneAsync(contact); } public async Task DeleteContactAsync(Guid id) { var filter = filterBuilder.Eq(contact => contact.Id, id); await familyCollection.DeleteOneAsync(filter); } public async Task> GetContactsAsync() { var res = await familyCollection.FindAsync(new BsonDocument()); return await res.ToListAsync(); } public async Task GetContactAsync(Guid id) { var filter = filterBuilder.Eq(contact => contact.Id, id); var res = await familyCollection.FindAsync(filter); return await res.SingleOrDefaultAsync(); } public async Task UpdateContactAsync(Contact contact) { var filter = filterBuilder.Eq(exisitingContact => exisitingContact.Id, contact.Id); await familyCollection.ReplaceOneAsync(filter, contact); } } }