You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
amarok/amarok/src/magnatunebrowser/magnatunedatabasehandler.h

170 lines
5.0 KiB

/*
Copyright (c) 2006 Nikolaj Hald Nielsen <nhnFreespirit@gmail.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef MAGNATUNEDATABASEHANDLER_H
#define MAGNATUNEDATABASEHANDLER_H
#include "collectiondb.h"
#include "magnatunetypes.h"
#include <tqstringlist.h>
/**
* This class wraps the database operations needed by the MagnatuneBrowser
* Uses the singleton pattern
*
* @author Nikolaj Hald Nielsen <nhnFreespirit@gmail.com>
*/
class MagnatuneDatabaseHandler{
public:
/**
* Function for retrieving the singleton
* @return pointer to the singleton
*/
static MagnatuneDatabaseHandler * instance();
~MagnatuneDatabaseHandler();
/**
* Creates the tables needed to store Magnatune info
*/
void createDatabase();
/**
* Destroys Magnatune tables
*/
void destroyDatabase();
/**
* Inserts a new track into the Magnatune database
* @param track pointer to the track to insert
* @param albumId id of the album containing the track
* @param artistId id of the artist performing the track
* @return the database id of the newly inserted track
*/
int insertTrack(MagnatuneTrack *track, int albumId, int artistId);
/**
* inserts a new album into the Magnatune database
* @param album pointer to the album to insert
* @param artistId id of the artist performing the album
* @return the database id of the newly inserted album
*/
int insertAlbum(MagnatuneAlbum *album, int artistId);
/**
* inserts a new artist into the Magnatune database
* @param artist pointer to the artist to insert
* @return the database id of the newly inserted artist
*/
int insertArtist(MagnatuneArtist *artist);
//get id, or -1 if artist does not exist
/**
* Retrieves the id of a named artist
* @param name artist name to retrieve
* @return id of artist. -1 if no artist is found
*/
int getArtistIdByExactName(TQString name);
/**
* Retrieves the id of an album based on its unique album code.
* @param albumcode The album code.
* @return The id of the album, -1 if not foud.
*/
int getAlbumIdByAlbumCode( TQString albumcode );
/**
* Returns all artist that has albums in a given genre. If an artist has both a Rock
* and a Techno album, he will be included when searching for either
* @param genre the genre
* @return A list of artist in the genre
*/
MagnatuneArtistList getArtistsByGenre(TQString genre);
/**
* Returns the artist with a given id
* @param id The id of the artist to look for
* @return The artist with the given id. Returns an empty artist if not found.
*/
MagnatuneArtist getArtistById(int id);
/**
* Returns the album with a given id
* @param id The id of the album to look for
* @return The album with the given id. Returns an empty album if not found.
*/
MagnatuneAlbum getAlbumById(int id);
/**
* Retrieves all albums by a single artist from the database
* @param id The id of the artist
* @param genre Limits the albums to a specific genre. Use "All" to get all albums
* @return List of albums. empty if none are found
*/
MagnatuneAlbumList getAlbumsByArtistId(int id, TQString genre);
/**
* Retrieves all tracks on a given album
* @param id The id of the album
* @return A list of tracks. Empty if album is not found or has no tracks
*/
MagnatuneTrackList getTracksByAlbumId(int id);
/**
* Retrieves all tracks by given artist
* @param id The id of the artist
* @return A list of tracks. Empty if artist is not found, artist has no albums or albums have no tracks
*/
MagnatuneTrackList getTracksByArtistId(int id);
/**
* Retrieves a list of all genres present in the databse
* @return A list of genres
*/
TQStringList getAlbumGenres();
/**
* Begins a database transaction. Must be followed by a later call to commit()
*/
void begin();
/**
* Completes (executes) a database transaction. Must be preceded by a call to begin()
*/
void commit();
protected:
/**
* Private constructor (singleton pattern)
* @return Pointer to new object
*/
MagnatuneDatabaseHandler();
static MagnatuneDatabaseHandler * m_pInstance;
};
#endif