1 ////////////////////////////////////////////////////////////////////////////// 2 // 3 // Copyright (c) 2004-2021 musikcube team 4 // 5 // All rights reserved. 6 // 7 // Redistribution and use in source and binary forms, with or without 8 // modification, are permitted provided that the following conditions are met: 9 // 10 // * Redistributions of source code must retain the above copyright notice, 11 // this list of conditions and the following disclaimer. 12 // 13 // * Redistributions in binary form must reproduce the above copyright 14 // notice, this list of conditions and the following disclaimer in the 15 // documentation and/or other materials provided with the distribution. 16 // 17 // * Neither the name of the author nor the names of other contributors may 18 // be used to endorse or promote products derived from this software 19 // without specific prior written permission. 20 // 21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 // POSSIBILITY OF SUCH DAMAGE. 32 // 33 ////////////////////////////////////////////////////////////////////////////// 34 35 #pragma once 36 37 #include "ITrackList.h" 38 #include "IValueList.h" 39 #include "IMapList.h" 40 #include "ITrack.h" 41 #include "IAllocator.h" 42 43 namespace musik { namespace core { namespace sdk { 44 45 class IMetadataProxy { 46 public: 47 virtual ITrackList* QueryTracks( 48 const char* query = nullptr, 49 int limit = -1, 50 int offset = 0) = 0; 51 52 virtual ITrack* QueryTrackById(int64_t trackId) = 0; 53 54 virtual ITrack* QueryTrackByExternalId(const char* externalId) = 0; 55 56 virtual ITrackList* QueryTracksByCategory( 57 const char* categoryType, 58 int64_t selectedId, 59 const char* filter = "", 60 int limit = -1, 61 int offset = 0) = 0; 62 63 virtual ITrackList* QueryTracksByCategories( 64 IValue** categories, 65 size_t categoryCount, 66 const char* filter = "", 67 int limit = -1, 68 int offset = 0) = 0; 69 70 virtual ITrackList* QueryTracksByExternalId( 71 const char** externalIds, size_t externalIdCount) = 0; 72 73 virtual IValueList* ListCategories() = 0; 74 75 virtual IValueList* QueryCategory( 76 const char* type, 77 const char* filter = "") = 0; 78 79 virtual IValueList* QueryCategoryWithPredicate( 80 const char* type, 81 const char* predicateType, 82 int64_t predicateId, 83 const char* filter = "") = 0; 84 85 virtual IValueList* QueryCategoryWithPredicates( 86 const char* type, 87 IValue** predicates, 88 size_t predicateCount, 89 const char* filter = "") = 0; 90 91 virtual IMapList* QueryAlbums(const char* filter = "") = 0; 92 93 virtual IMapList* QueryAlbums( 94 const char* categoryIdName, 95 int64_t categoryIdValue, 96 const char* filter = "") = 0; 97 98 virtual int64_t SavePlaylistWithIds( 99 int64_t* trackIds, 100 size_t trackIdCount, 101 const char* playlistName, 102 const int64_t playlistId = 0) = 0; 103 104 virtual int64_t SavePlaylistWithExternalIds( 105 const char** externalIds, 106 size_t externalIdCount, 107 const char* playlistName, 108 const int64_t playlistId = 0) = 0; 109 110 virtual int64_t SavePlaylistWithTrackList( 111 ITrackList* trackList, 112 const char* playlistName, 113 const int64_t playlistId = 0) = 0; 114 115 virtual bool RenamePlaylist( 116 const int64_t playlistId, 117 const char* playlistName) = 0; 118 119 virtual bool DeletePlaylist(const int64_t playlistId) = 0; 120 121 virtual bool AppendToPlaylistWithIds( 122 const int64_t playlistId, 123 const int64_t* trackIds, 124 size_t trackIdCount, 125 int offset = -1) = 0; 126 127 virtual bool AppendToPlaylistWithExternalIds( 128 const int64_t playlistId, 129 const char** externalTrackIds, 130 size_t externalTrackIdCount, 131 int offset = -1) = 0; 132 133 virtual bool AppendToPlaylistWithTrackList( 134 const int64_t playlistId, 135 ITrackList* trackList, 136 int offset = -1) = 0; 137 138 virtual size_t RemoveTracksFromPlaylist( 139 const int64_t playlistId, 140 const char** externalIds, 141 const int* sortOrders, 142 int count) = 0; 143 144 virtual bool SendRawQuery( 145 const char* query, 146 IAllocator& allocator, 147 char** resultData, 148 int* resultSize) = 0; 149 150 virtual void Release() = 0; 151 }; 152 153 } } } 154 155