#ifndef CORE_MODELS_CONTROLLER_H
#define CORE_MODELS_CONTROLLER_H

#include <uuid/uuid.h>
#include <sqlite3.h>

#include <helpers.h>
#include <models/relay.h>

typedef struct
{
    uuid_t id;
    char name[128];
    char ip[17];
    int active;
    int port;
    int relay_count;
    relay_t **relays;
} controller_t;

void
controller_free(controller_t* contoller);

int
controller_save(controller_t* contoller);

int
controller_remove(controller_t* contoller);

char*
controller_to_json(controller_t* contoller);

controller_t**
controller_get_by_simple(const char *key, const void *value, intptr_t bind_func, int bind_func_param);

controller_t**
controller_get_all();

int
controller_command(int command_code, char *payload, uint32_t payload_size);

void
controller_free_list(controller_t **controllers_list);

#endif /* CORE_MODELS_CONTROLLER_H */