about summary refs log tree commit diff stats
path: root/database.h
blob: 50f5b552df4a772bc0e618a29913f5352c2bba13 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef DATABASE_H_75C3CE0F
#define DATABASE_H_75C3CE0F

#include <string>

struct sqlite3;

struct achievement {
  int achievementId;
  int gameId;
  std::string title;
  std::string color;
};

struct did {
  int profileId;
  std::string date;
};

class database {
public:

  // Constructor

  explicit database(std::string path);

  // Disable copying

  database(const database& other) = delete;
  database& operator=(const database& other) = delete;

  // Move constructor and move assignment

  database(database&& other);
  database& operator=(database&& other);

  // Swap

  friend void swap(database& first, database& second);

  // Destructor

  ~database();

  // Accessors

  achievement getRandomAchievement() const;

  bool doesGameHaveImages(int gameId) const;

  std::string getRandomImageForGame(int gameId) const;

  did getRandomDidForAchievement(int achievementId) const;

private:

  database() = default;

  sqlite3* ppdb_ = nullptr;
};

#endif /* end of include guard: DATABASE_H_75C3CE0F */