1//============================================================================
2//
3// SSSS tt lll lll
4// SS SS tt ll ll
5// SS tttttt eeee ll ll aaaa
6// SSSS tt ee ee ll ll aa
7// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
8// SS SS tt ee ll ll aa aa
9// SSSS ttt eeeee llll llll aaaaa
10//
11// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
12// and the Stella Team
13//
14// See the file "License.txt" for information on usage and redistribution of
15// this file, and for a DISCLAIMER OF ALL WARRANTIES.
16//============================================================================
17
18#ifndef KEY_VALUE_REPOSITORY_SQLITE_HXX
19#define KEY_VALUE_REPOSITORY_SQLITE_HXX
20
21#include "bspf.hxx"
22#include "repository/KeyValueRepository.hxx"
23#include "SqliteDatabase.hxx"
24#include "SqliteStatement.hxx"
25
26class KeyValueRepositorySqlite : public KeyValueRepository
27{
28 public:
29
30 KeyValueRepositorySqlite(SqliteDatabase& db, const string& tableName);
31
32 std::map<string, Variant> load() override;
33
34 void save(const std::map<string, Variant>& values) override;
35
36 void save(const string& key, const Variant& value) override;
37
38 void initialize();
39
40 private:
41
42 string myTableName;
43 SqliteDatabase& myDb;
44
45 unique_ptr<SqliteStatement> myStmtInsert;
46 unique_ptr<SqliteStatement> myStmtSelect;
47
48 private:
49
50 KeyValueRepositorySqlite(const KeyValueRepositorySqlite&) = delete;
51 KeyValueRepositorySqlite(KeyValueRepositorySqlite&&) = delete;
52 KeyValueRepositorySqlite& operator=(const KeyValueRepositorySqlite&) = delete;
53 KeyValueRepositorySqlite operator=(KeyValueRepositorySqlite&&) = delete;
54};
55
56#endif // KEY_VALUE_REPOSITORY_SQLITE_HXX
57