using MongoDB.Driver; using TextSender_API.Models; namespace TextSender_API.Repositories; public class UsersRepository : BaseRepository { #region Fields private readonly IMongoCollection _bookCollection; #endregion #region Constructors public UsersRepository(string connectionString) { this._connectionString = connectionString; this._tableName = "users"; var client = this.InitializeClient(); this._bookCollection = client.GetDatabase(this._databaseName).GetCollection(this._tableName); } #endregion #region Metods public Tuple Exists(User user) { var allUsers = this.RetrieveAllUsers(); var result = allUsers.FirstOrDefault(ea => ea.Username!.Equals(user.Username)); if (result != null) { return new Tuple(true, result!); } else { return new Tuple(false, new User()); } } public void CreateUser(User user) { this._bookCollection.InsertOne(user); } public List RetrieveAllUsers() { return this._bookCollection.Find(_ => true).ToList(); } public void Update(User user) { var filter = Builders.Filter.Eq(u => u.Id, user.Id); this._bookCollection.ReplaceOne(filter, user); } public void Delete(User user) { var filter = Builders.Filter.Eq(u => u.Id, user.Id); this._bookCollection.DeleteOne(filter); } private MongoClient InitializeClient() { return new MongoClient(this._connectionString); } #endregion } public class SaltRepository : BaseRepository { #region Fields private readonly IMongoCollection _bookCollection; #endregion #region Constructors public SaltRepository(string connectionString) { this._connectionString = connectionString; this._tableName = "salt"; var client = this.InitializeClient(); this._bookCollection = client.GetDatabase(this._databaseName).GetCollection(this._tableName); } #endregion #region Metods public void Create(Salt salt) { this._bookCollection.InsertOne(salt); } public List RetrieveAll() { return this._bookCollection.Find(_ => true).ToList(); } public Salt Retrieve(string userId) { return this._bookCollection.Find(s => s.UserId!.Equals(userId)).FirstOrDefault(); } public void Update(Salt salt) { var filter = Builders.Filter.Eq(u => u.Id, salt.Id); this._bookCollection.ReplaceOne(filter, salt); } public void Delete(Salt salt) { var filter = Builders.Filter.Eq(u => u.Id, salt.Id); this._bookCollection.DeleteOne(filter); } private MongoClient InitializeClient() { return new MongoClient(this._connectionString); } #endregion }