using System; using System.Collections.Generic; using LiteDB; using skydiveLogs_api.Domain; using skydiveLogs_api.DomainService.Repositories; using skydiveLogs_api.Infrastructure.Interfaces; namespace skydiveLogs_api.Infrastructure { public class UserImageRepository : IUserImageRepository { #region Public Constructors public UserImageRepository(IDataProvider dataProvider) { _dataProvider = dataProvider; _col = _dataProvider.CollOfImage; } #endregion Public Constructors #region Public Methods /// /// Adds a new user image to the database. /// /// The user image instance to insert into the database. /// The number of rows affected. Returns 0 if the insert operation failed. /// /// Attempts to insert the new user image into the database using LiteDB. /// The user image should have all required properties set before insertion. /// If an exception occurs during insertion, the method returns 0. /// The returned value indicates the number of records affected by the insert operation. /// public int Add(UserImage newImage) { int result; try { var tmp = _col.Insert(newImage); result = tmp.AsInt32; } catch { result = 0; } return result; } /// /// Retrieves all user images from the database. /// /// An enumerable collection containing all user image instances stored in the database. /// /// This method is not currently implemented and throws a when called. /// Implement this method to retrieve all user image records from the database. /// /// Thrown when the method is called. public IEnumerable GetAll() { throw new NotImplementedException(); } /// /// Retrieves all user images for a specific user. /// /// The user whose image records to retrieve. /// An enumerable collection containing all user image instances belonging to the specified user. /// /// Queries the user image collection and retrieves all records where the user ID matches the provided user. /// Each returned image record includes navigation properties to the associated user entity. /// Returns an empty collection if the user has no profile images. /// public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) .ToList(); } /// /// Retrieves a user image by its unique identifier. /// /// The unique identifier of the user image to retrieve. /// The user image instance if found, otherwise null. /// /// Searches the user image collection for a record with the specified ID. /// Returns null if no user image with the matching ID is found in the database. /// public UserImage GetById(int id) { return _col.FindById(new BsonValue(id)); } /// /// Gets the total count of user images for a specific user. /// /// The user whose image records to count. /// The total number of user image records for the specified user. /// /// This method is not currently implemented and throws a when called. /// Implement this method to retrieve the count of user image records per user. /// /// Thrown when the method is called. public int GetCount() { throw new NotImplementedException(); } /// /// Updates an existing user image record in the database. /// /// The user image instance containing the updated data. /// if the update was successful; otherwise, . /// /// Updates the user image record in the database with the provided image instance. /// The user image must have a valid ID to be updated. /// The method returns the result of the underlying LiteDB update operation. /// If the user image does not exist, the update operation will return 0. /// public bool Update(UserImage image) { return _col.Update(image); } #endregion Public Methods #region Private Fields private readonly ILiteCollection _col; private readonly IDataProvider _dataProvider; #endregion Private Fields } }