using Lactose.Models;

namespace Lactose.Repositories;

/// <summary>
/// Interface for folder repository operations.
/// </summary>
public interface IFolderRepository {
    /// <summary>
    /// Creates a new folder.
    /// </summary>
    /// <param name="folder">The folder to create.</param>
    void Create(Folder folder);

    /// <summary>
    /// Updates an existing folder.
    /// </summary>
    /// <param name="id">The ID of the folder to update.</param>
    /// <param name="folder">The updated folder data.</param>
    void Update(Guid id, Folder folder);

    /// <summary>
    /// Deletes a folder by ID.
    /// </summary>
    /// <param name="id">The ID of the folder to delete.</param>
    void Delete(Guid id);

    /// <summary>
    /// Retrieves a folder by ID.
    /// </summary>
    /// <param name="id">The ID of the folder to retrieve.</param>
    /// <returns>The folder with the specified ID.</returns>
    Folder? Get(Guid id);

    /// <summary>
    /// Retrieves all folders.
    /// </summary>
    IEnumerable<Folder> GetAll();
}
