Minetest 5.9.0-dev
 
Loading...
Searching...
No Matches
database-files.h
Go to the documentation of this file.
1/*
2Minetest
3Copyright (C) 2017 nerzhul, Loic Blot <loic.blot@unix-experience.fr>
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU Lesser General Public License as published by
7the Free Software Foundation; either version 2.1 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU Lesser General Public License for more details.
14
15You should have received a copy of the GNU Lesser General Public License along
16with this program; if not, write to the Free Software Foundation, Inc.,
1751 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18*/
19
20#pragma once
21
22// !!! WARNING !!!
23// This backend is intended to be used on Minetest 0.4.16 only for the transition backend
24// for player files
25
26#include "database.h"
27#include <unordered_map>
28#include <unordered_set>
29#include <json/json.h> // for Json::Value
30
32{
33public:
34 PlayerDatabaseFiles(const std::string &savedir);
35 virtual ~PlayerDatabaseFiles() = default;
36
37 void savePlayer(RemotePlayer *player);
38 bool loadPlayer(RemotePlayer *player, PlayerSAO *sao);
39 bool removePlayer(const std::string &name);
40 void listPlayers(std::vector<std::string> &res);
41
42private:
43 void deSerialize(RemotePlayer *p, std::istream &is, const std::string &playername,
44 PlayerSAO *sao);
45 /*
46 serialize() writes a bunch of text that can contain
47 any characters except a '\0', and such an ending that
48 deSerialize stops reading exactly at the right point.
49 */
50 void serialize(RemotePlayer *p, std::ostream &os);
51
52 std::string m_savedir;
53};
54
56{
57public:
58 AuthDatabaseFiles(const std::string &savedir);
59 virtual ~AuthDatabaseFiles() = default;
60
61 virtual bool getAuth(const std::string &name, AuthEntry &res);
62 virtual bool saveAuth(const AuthEntry &authEntry);
63 virtual bool createAuth(AuthEntry &authEntry);
64 virtual bool deleteAuth(const std::string &name);
65 virtual void listNames(std::vector<std::string> &res);
66 virtual void reload();
67
68private:
69 std::unordered_map<std::string, AuthEntry> m_auth_list;
70 std::string m_savedir;
71 bool readAuthFile();
72 bool writeAuthFile();
73};
74
76{
77public:
78 ModStorageDatabaseFiles(const std::string &savedir);
79 virtual ~ModStorageDatabaseFiles() = default;
80
81 virtual void getModEntries(const std::string &modname, StringMap *storage);
82 virtual void getModKeys(const std::string &modname, std::vector<std::string> *storage);
83 virtual bool getModEntry(const std::string &modname,
84 const std::string &key, std::string *value);
85 virtual bool hasModEntry(const std::string &modname, const std::string &key);
86 virtual bool setModEntry(const std::string &modname,
87 const std::string &key, std::string_view value);
88 virtual bool removeModEntry(const std::string &modname, const std::string &key);
89 virtual bool removeModEntries(const std::string &modname);
90 virtual void listMods(std::vector<std::string> *res);
91
92 virtual void beginSave();
93 virtual void endSave();
94
95private:
96 Json::Value *getOrCreateJson(const std::string &modname);
97
98 std::string m_storage_dir;
99 std::unordered_map<std::string, Json::Value> m_mod_storage;
100 std::unordered_set<std::string> m_modified;
101};
Definition: database-files.h:56
virtual bool deleteAuth(const std::string &name)
Definition: database-files.cpp:309
std::unordered_map< std::string, AuthEntry > m_auth_list
Definition: database-files.h:69
bool readAuthFile()
Definition: database-files.cpp:332
virtual bool createAuth(AuthEntry &authEntry)
Definition: database-files.cpp:301
virtual ~AuthDatabaseFiles()=default
virtual void listNames(std::vector< std::string > &res)
Definition: database-files.cpp:318
virtual bool saveAuth(const AuthEntry &authEntry)
Definition: database-files.cpp:293
virtual bool getAuth(const std::string &name, AuthEntry &res)
Definition: database-files.cpp:283
bool writeAuthFile()
Definition: database-files.cpp:362
std::string m_savedir
Definition: database-files.h:70
virtual void reload()
Definition: database-files.cpp:327
Definition: database.h:76
Definition: database-files.h:76
virtual ~ModStorageDatabaseFiles()=default
virtual bool getModEntry(const std::string &modname, const std::string &key, std::string *value)
Definition: database-files.cpp:411
Json::Value * getOrCreateJson(const std::string &modname)
Definition: database-files.cpp:521
virtual bool hasModEntry(const std::string &modname, const std::string &key)
Definition: database-files.cpp:425
virtual void beginSave()
Definition: database-files.cpp:471
virtual void endSave()
Definition: database-files.cpp:475
virtual void getModEntries(const std::string &modname, StringMap *storage)
Definition: database-files.cpp:385
virtual void listMods(std::vector< std::string > *res)
Definition: database-files.cpp:507
std::unordered_set< std::string > m_modified
Definition: database-files.h:100
std::string m_storage_dir
Definition: database-files.h:98
virtual bool removeModEntries(const std::string &modname)
Definition: database-files.cpp:460
virtual bool removeModEntry(const std::string &modname, const std::string &key)
Definition: database-files.cpp:445
virtual void getModKeys(const std::string &modname, std::vector< std::string > *storage)
Definition: database-files.cpp:398
virtual bool setModEntry(const std::string &modname, const std::string &key, std::string_view value)
Definition: database-files.cpp:431
std::unordered_map< std::string, Json::Value > m_mod_storage
Definition: database-files.h:99
Definition: database.h:89
Definition: database-files.h:32
virtual ~PlayerDatabaseFiles()=default
void listPlayers(std::vector< std::string > &res)
Definition: database-files.cpp:251
void deSerialize(RemotePlayer *p, std::istream &is, const std::string &playername, PlayerSAO *sao)
Definition: database-files.cpp:40
bool removePlayer(const std::string &name)
Definition: database-files.cpp:200
void serialize(RemotePlayer *p, std::ostream &os)
Definition: database-files.cpp:117
std::string m_savedir
Definition: database-files.h:52
bool loadPlayer(RemotePlayer *player, PlayerSAO *sao)
Definition: database-files.cpp:226
void savePlayer(RemotePlayer *player)
Definition: database-files.cpp:152
Definition: database.h:56
Definition: player_sao.h:71
Definition: remoteplayer.h:40
std::unordered_map< std::string, std::string > StringMap
Definition: string.h:78
Definition: database.h:67
static std::string p(std::string path)
Definition: test_filesys.cpp:64