From 9934c444bda05d32f6c5e03895ecbfb4f0532df1 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Mon, 4 Jan 2010 23:29:19 +0100 Subject: started conversion of UDatabase, added first tests for framework you will need a Ultrastar.db in the game folder to pass the tests --- src/base/database.hpp | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/base/database.hpp (limited to 'src/base/database.hpp') diff --git a/src/base/database.hpp b/src/base/database.hpp new file mode 100644 index 00000000..e9ebdb20 --- /dev/null +++ b/src/base/database.hpp @@ -0,0 +1,144 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef DATABASE_HPP +#define DATABASE_HPP + +#include +#include +#include +#include + +namespace usdx +{ + class StatResult; + + /* Wrapper for statistic database */ + class StatDatabase + { + private: + std::string filename; + sqlite3 *database; + + // Singleton + StatDatabase(std::string filename); + + static StatDatabase* instance; + public: + static StatDatabase* get_instance(); + + ~StatDatabase(void); + + static void init(const std::string filename); + + int get_version(void); + void set_version(int version); + +/* void read_score(Song *song); + void add_score(Song *song, int level, const char* name, int score); + void write_score(Song *song); +*/ + const std::string get_filename(void); + + StatResult* get_stats(StatResult *list, short count, unsigned int page, bool reversed); +// unsigned int get_total_entrys(StatType type); + + time_t get_stat_reset(void); + char* format_date(char* time, size_t max, time_t timestamp); + }; + + /* Element for linked list with pointer to next */ + class StatResult + { + private: + StatResult() {}; + StatResult(const StatResult &source) {}; + void operator=(const StatResult &source) {}; + + protected: + StatResult *next; + + public: + virtual ~StatResult(void); + }; + + class StatResultBestScores : StatResult + { + private: + char *singer; + unsigned short score; + unsigned short difficulty; + char *song_artist; + char *song_title; + time_t date; + + public: + StatResultBestScores( + char *singer, + unsigned short score, + unsigned short difficulty, + char* song_artist, + char* song_title, + time_t date); + ~StatResultBestScores(void); + }; + + class StatResultBestSingers : StatResult + { + private: + char *singer; + unsigned short average_score; + + public: + StatResultBestSingers(char *singer, unsigned short average_score); + ~StatResultBestSingers(void); + }; + + class StatResultMostSungSong : StatResult + { + private: + char *song_artist; + char *song_title; + unsigned short times_sung; + + public: + StatResultMostSungSong(char* song_artist, char* song_title, unsigned short times_sung); + ~StatResultMostSungSong(void); + }; + + class StatResultMostSungBand : StatResult + { + private: + char *song_artist; + unsigned short times_sung; + + public: + StatResultMostSungBand(char* song_artist, unsigned short times_sung); + ~StatResultMostSungBand(void); + }; +}; + +#endif -- cgit v1.2.3