89 lines
3.0 KiB
C#
89 lines
3.0 KiB
C#
using Lactose.Models;
|
|
|
|
namespace Lactose.Repositories;
|
|
|
|
/// <summary>
|
|
/// Interface for album repository operations.
|
|
/// </summary>
|
|
public interface IAlbumRepository : IDisposable {
|
|
/// <summary>
|
|
/// Inserts a new album into the database
|
|
/// </summary>
|
|
/// <param name="album"></param>
|
|
public void Insert(Album album);
|
|
|
|
/// <summary>
|
|
/// Updates an album in the database
|
|
/// </summary>
|
|
/// <param name="album"></param>
|
|
public void Update(Album album);
|
|
|
|
/// <summary>
|
|
/// Updates multiple albums in the database.
|
|
/// </summary>
|
|
/// <param name="albums">The albums to update.</param>
|
|
public void UpdateBulk(IEnumerable<Album> albums);
|
|
|
|
/// <summary>
|
|
/// Saves changes to the database.
|
|
/// </summary>
|
|
public void Save();
|
|
|
|
/// <summary>
|
|
/// Finds an album by its ID.
|
|
/// </summary>
|
|
/// <param name="id">The ID of the album.</param>
|
|
/// <returns>The album if found; otherwise, null.</returns>
|
|
public Album? Find(Guid id);
|
|
|
|
/// <summary>
|
|
/// Finds albums by the owner's ID.
|
|
/// </summary>
|
|
/// <param name="ownerId">The ID of the owner.</param>
|
|
/// <returns>A collection of albums owned by the specified owner.</returns>
|
|
public IEnumerable<Album> FindByOwner(Guid ownerId);
|
|
|
|
/// <summary>
|
|
/// Finds albums by the person's ID.
|
|
/// </summary>
|
|
/// <param name="personId">The ID of the person.</param>
|
|
/// <returns>A collection of albums associated with the specified person.</returns>
|
|
public IEnumerable<Album> FindByPerson(Guid personId);
|
|
|
|
/// <summary>
|
|
/// Finds multiple albums by their IDs.
|
|
/// </summary>
|
|
/// <param name="ids">The IDs of the albums.</param>
|
|
/// <returns>A collection of albums with the specified IDs.</returns>
|
|
public IEnumerable<Album> FindBulk(IEnumerable<Guid> ids);
|
|
|
|
/// <summary>
|
|
/// Finds albums within a specified date range.
|
|
/// </summary>
|
|
/// <param name="from">The start date of the range.</param>
|
|
/// <param name="to">The end date of the range.</param>
|
|
/// <returns>A collection of albums created or updated within the specified date range.</returns>
|
|
public IEnumerable<Album> FindByDateRange(DateTime from, DateTime to);
|
|
|
|
/// <summary>
|
|
/// Removes an album from the database.
|
|
/// </summary>
|
|
/// <param name="album">The album to remove.</param>
|
|
public void Remove(Album album);
|
|
|
|
/// <summary>
|
|
/// Searches for albums based on a query string.
|
|
/// </summary>
|
|
/// <param name="query">The search query string.</param>
|
|
/// <param name="page">The page number for pagination (default is 0).</param>
|
|
/// <param name="pageSize">The number of results per page (default is 150).</param>
|
|
/// <returns>A list of album IDs that match the search query.</returns>
|
|
public IEnumerable<Album> SearchQuery(string query, int page = 0, int pageSize = 150);
|
|
|
|
/// <summary>
|
|
/// Finds albums that have no person assigned.
|
|
/// </summary>
|
|
/// <returns>A collection of albums without a person owner.</returns>
|
|
public IEnumerable<Album> FindUnassigned();
|
|
|
|
} |