blob: 291916ab25c2fc55836568cae14d426b8abdc3f4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
#nullable disable
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Jellyfin.Data.Enums;
using Jellyfin.Database.Implementations.Entities;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Querying;
namespace MediaBrowser.Controller.Persistence;
/// <summary>
/// Provides an interface to implement an Item repository.
/// </summary>
public interface IItemRepository
{
/// <summary>
/// Retrieves the item.
/// </summary>
/// <param name="id">The id.</param>
/// <returns>BaseItem.</returns>
BaseItem RetrieveItem(Guid id);
/// <summary>
/// Gets the items.
/// </summary>
/// <param name="filter">The query.</param>
/// <returns>QueryResult<BaseItem>.</returns>
QueryResult<BaseItem> GetItems(InternalItemsQuery filter);
/// <summary>
/// Gets the item ids list.
/// </summary>
/// <param name="filter">The query.</param>
/// <returns>List<Guid>.</returns>
IReadOnlyList<Guid> GetItemIdsList(InternalItemsQuery filter);
/// <summary>
/// Gets the item list.
/// </summary>
/// <param name="filter">The query.</param>
/// <returns>List<BaseItem>.</returns>
IReadOnlyList<BaseItem> GetItemList(InternalItemsQuery filter);
/// <summary>
/// Gets the item list. Used mainly by the Latest api endpoint.
/// </summary>
/// <param name="filter">The query.</param>
/// <param name="collectionType">Collection Type.</param>
/// <returns>List<BaseItem>.</returns>
IReadOnlyList<BaseItem> GetLatestItemList(InternalItemsQuery filter, CollectionType collectionType);
/// <summary>
/// Checks if an item has been persisted to the database.
/// </summary>
/// <param name="id">The id to check.</param>
/// <returns>True if the item exists, otherwise false.</returns>
Task<bool> ItemExistsAsync(Guid id);
/// <summary>
/// Gets genres with item counts.
/// </summary>
/// <param name="filter">The query filter.</param>
/// <returns>The genres and their item counts.</returns>
QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetGenres(InternalItemsQuery filter);
/// <summary>
/// Gets music genres with item counts.
/// </summary>
/// <param name="filter">The query filter.</param>
/// <returns>The music genres and their item counts.</returns>
QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetMusicGenres(InternalItemsQuery filter);
/// <summary>
/// Gets studios with item counts.
/// </summary>
/// <param name="filter">The query filter.</param>
/// <returns>The studios and their item counts.</returns>
QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetStudios(InternalItemsQuery filter);
/// <summary>
/// Gets artists with item counts.
/// </summary>
/// <param name="filter">The query filter.</param>
/// <returns>The artists and their item counts.</returns>
QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetArtists(InternalItemsQuery filter);
/// <summary>
/// Gets album artists with item counts.
/// </summary>
/// <param name="filter">The query filter.</param>
/// <returns>The album artists and their item counts.</returns>
QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetAlbumArtists(InternalItemsQuery filter);
/// <summary>
/// Gets all artists with item counts.
/// </summary>
/// <param name="filter">The query filter.</param>
/// <returns>All artists and their item counts.</returns>
QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetAllArtists(InternalItemsQuery filter);
/// <summary>
/// Gets all music genre names.
/// </summary>
/// <returns>The list of music genre names.</returns>
IReadOnlyList<string> GetMusicGenreNames();
/// <summary>
/// Gets all studio names.
/// </summary>
/// <returns>The list of studio names.</returns>
IReadOnlyList<string> GetStudioNames();
/// <summary>
/// Gets all genre names.
/// </summary>
/// <returns>The list of genre names.</returns>
IReadOnlyList<string> GetGenreNames();
/// <summary>
/// Gets all artist names.
/// </summary>
/// <returns>The list of artist names.</returns>
IReadOnlyList<string> GetAllArtistNames();
/// <summary>
/// Gets legacy query filters aggregated from the database.
/// </summary>
/// <param name="filter">The query filter.</param>
/// <returns>Aggregated filter values.</returns>
QueryFiltersLegacy GetQueryFiltersLegacy(InternalItemsQuery filter);
/// <summary>
/// Gets whether all children of the requested item have been played.
/// </summary>
/// <param name="user">The user to check against.</param>
/// <param name="id">The top item id to check.</param>
/// <param name="recursive">Whether the check should be done recursively.</param>
/// <returns>A value indicating whether all children have been played.</returns>
bool GetIsPlayed(User user, Guid id, bool recursive);
}
|