Etterna 0.74.4
Loading...
Searching...
No Matches
SongCacheIndex.h
1#ifndef SONG_CACHE_INDEX_H
2#define SONG_CACHE_INDEX_H
3
4#include "Etterna/FileTypes/IniFile.h"
5#include "Etterna/Models/Songs/Song.h"
6#include "arch/LoadingWindow/LoadingWindow.h"
7
8#include <SQLiteCpp/SQLiteCpp.h>
9#include <SQLiteCpp/VariadicBind.h>
10
12{
13};
15{
16 IniFile CacheIndex;
17 static std::string MangleName(const std::string& Name);
18
19 bool OpenDB();
20 void ResetDB();
21 void DeleteDB();
22 void CreateDBTables() const;
23 bool DBEmpty{ true };
24 SQLite::Transaction* curTransaction{ nullptr };
25
26 public:
27 SQLite::Database* db{ nullptr };
30 inline std::pair<std::string, int> SongFromStatement(
31 Song* song,
32 SQLite::Statement& query) const;
33 void LoadHyperCache(LoadingWindow* ld,
34 std::map<std::string, Song*>& hyperCache);
35 void LoadCache(
36 LoadingWindow* ld,
37 std::vector<std::pair<std::pair<std::string, unsigned int>, Song*>*>&
38 cache) const;
39 void DeleteSongFromDBByCondition(const std::string& condition) const;
40 void DeleteSongFromDB(Song* songPtr) const;
41 void DeleteSongFromDBByDir(const std::string& dir) const;
42 void DeleteSongFromDBByDirHash(unsigned int hash) const;
43 static std::string GetCacheFilePath(const std::string& sGroup,
44 const std::string& sPath);
45 unsigned GetCacheHash(const std::string& path) const;
46 bool delay_save_cache;
47
48 int64_t InsertStepsTimingData(const TimingData& timing) const;
49 int64_t InsertSteps(Steps* pSteps, int64_t songID) const;
50 bool LoadSongFromCache(Song* song, const std::string& dir);
51 bool CacheSong(Song& song, const std::string& dir) const;
52 void StartTransaction();
53 void FinishTransaction();
54};
55
56extern SongCacheIndex*
57 SONGINDEX; // global and accessible from anywhere in our program
58
59#endif
The functions to read and write .INI files.
Definition IniFile.h:11
Opens and displays the loading banner.
Definition LoadingWindow.h:9
Definition SongCacheIndex.h:15
Definition SongCacheIndex.h:12
Holds all music metadata and steps for one song.
Definition Song.h:65
Holds note information for a Song.
Definition Steps.h:42
Holds data for translating beats<->seconds.
Definition TimingData.h:54