~aleteoryx/muditaos

ref: 2276ceed679b93a3a891e4f5739ade9e13991c5a muditaos/module-db/Database/Database.hpp -rw-r--r-- 1.3 KiB
2276ceed — Radoslaw Wicik [EGD-3743] Update copyrights in fies 5 years ago
                                                                                
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
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include "sqlite3.h"

#include "QueryResult.hpp"
#include <memory>

class Database
{
  public:
    Database(const char *name);

    virtual ~Database();

    std::unique_ptr<QueryResult> query(const char *format, ...);

    bool execute(const char *format, ...);

    // Must be invoked prior creating any database object in order to initialize database OS layer
    static void initialize();
    // Must be invoked before closing system in order to properly close OS layer
    static void deinitialize();

    bool isInitialized() const
    {
        return isInitialized_;
    }

    bool storeIntoFile(const std::string &backupPath);

    uint32_t getLastInsertRowId();
    void pragmaQuery(const std::string &pragmaStatemnt);

  private:
    const uint32_t maxQueryLen = (8 * 1024);

    /*
     * Arguments:
     *
     *   usrPtr - Pointer to user data
     *    count - The number of columns in the result set
     *     data - The row's data
     *  columns - The column names
     */
    static int queryCallback(void *usrPtr, int count, char **data, char **columns);

  protected:
    sqlite3 *dbConnection;
    const char *dbName;
    bool isInitialized_;
};