1<?php
2/*
3 * vim:set softtabstop=4 shiftwidth=4 expandtab:
4 *
5 * LICENSE: GNU Affero General Public License, version 3 (AGPL-3.0-or-later)
6 * Copyright 2001 - 2020 Ampache.org
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
20 *
21 */
22
23declare(strict_types=0);
24
25namespace Ampache\Repository\Model;
26
27use Ampache\Module\Authorization\Access;
28
29interface ModelFactoryInterface
30{
31    public function createPlaylist(int $id): Playlist;
32
33    public function createBrowse(
34        ?int $browse_id = null,
35        bool $cached = true
36    ): Browse;
37
38    public function createSong(
39        ?int $songId = null,
40        string $limitThreshold = ''
41    ): Song;
42
43    public function createRating(
44        int $objectId,
45        string $typeId
46    ): Rating;
47
48    public function createUser(
49        ?int $userId = null
50    ): User;
51
52    public function createAlbum(
53        ?int $albumId = null
54    ): Album;
55
56    public function createArtist(
57        ?int $artistId = null
58    ): Artist;
59
60    public function createWanted(
61        ?int $wantedId = null
62    ): Wanted;
63
64    public function createArt(
65        ?int $artId = null,
66        string $type = 'album',
67        string $kind = 'default'
68    ): Art;
69
70    public function createBroadcast(
71        int $broadcastId
72    ): Broadcast;
73
74    public function createLiveStream(
75        int $liveStreamId
76    ): Live_Stream;
77
78    public function createChannel(
79        int $channelId
80    ): Channel;
81
82    public function createPodcast(
83        int $podcastId
84    ): Podcast;
85
86    public function createPodcastEpisode(
87        int $podcastEpisodeId
88    ): Podcast_Episode;
89
90    public function createPrivateMsg(
91        int $privateMessageId
92    ): PrivateMsg;
93
94    public function createTvShow(
95        int $tvShowId
96    ): TvShow;
97
98    public function createDemocratic(
99        int $democraticId
100    ): Democratic;
101
102    public function createTmpPlaylist(
103        int $tmpPlaylistId
104    ): Tmp_Playlist;
105
106    public function createSearch(
107        ?int $searchId = 0,
108        string $searchType = 'song',
109        ?User $user = null
110    ): Search;
111
112    public function createShoutbox(
113        int $shoutboxId
114    ): Shoutbox;
115
116    public function createLicense(
117        int $licenseId
118    ): License;
119
120    public function createAccess(
121        int $accessId
122    ): Access;
123
124    public function createLabel(
125        int $labelId
126    ): Label;
127}
128