#ifndef EMGAUWA_CORE_controller_DBO_H
#define EMGAUWA_CORE_controller_DBO_H

#include <string>
#include <sqlite3.h>
#include <json/value.h>
#include <helpers.h>
#include "relay_dbo.h"

class controller_dbo
{
public:

    char id[33];
    char name[128];
    char ip[17];
    bool active;
    int port;
    int relay_count;
    char tag[64];
    relay_dbo **relays;

    ~controller_dbo();

    bool
    update();

    bool
    insert();

    bool
    remove();

    Json::Value
    to_json();

    static controller_dbo**
    get_by_simple(const char *key, const void *value, intptr_t bind_func);

    static controller_dbo**
    get_by(helpers::sql_filter_builder **filters);

    static controller_dbo**
    get_all();

    bool
    command(int command_code, const char *payload);

    static void
    free_list(controller_dbo **controllers_list);
};


#endif //EMGAUWA_CORE_controller_DBO_H