~aleteoryx/muditaos

ref: ee5b62a14e339e058de58eab354fa626111b3b3d muditaos/module-db/Tables/Table.hpp -rw-r--r-- 1.4 KiB
ee5b62a1 — Kuba Kleczkowski [EGD-6651] Fix communication with modem on Linux 4 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
// 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 <stdint.h>
#include <vector>
#include "Database/Database.hpp"

template <typename T, typename F> class Table
{

  protected:
    Table(Database *db) : db(db)
    {}

    virtual ~Table()
    {}

    virtual bool create()     = 0;
    virtual bool add(T entry) = 0;
    virtual bool removeAll()
    {
        return false;
    }
    virtual bool removeById(uint32_t id) = 0;
    virtual bool removeByField(F field, const char *str)
    {
        return true;
    }
    virtual bool update(T entry)                                                                            = 0;
    virtual T getById(uint32_t id)                                                                          = 0;
    virtual std::vector<T> getLimitOffset(uint32_t offset, uint32_t limit)                                  = 0;
    virtual std::vector<T> getLimitOffsetByField(uint32_t offset, uint32_t limit, F field, const char *str) = 0;
    virtual uint32_t count()                                                                                = 0;
    virtual uint32_t countByFieldId(const char *field, uint32_t id)                                         = 0;

    uint32_t getLastInsertRowId()
    {
        return db->getLastInsertRowId();
    }

    Database *db;
};