Files
tcp-chat/src/cli/ClientCLI/db/client_db.h

39 lines
1.2 KiB
C

#pragma once
#include "tcp-chat/tcp-chat.h"
#include "tsqlite.h"
#include "network/tcp-chat-protocol/v1.h"
#include "tlibc/collections/List.h"
/// @brief open DB and create tables
Result(tsqlite_connection* db) ClientDatabase_open(cstr file_path);
typedef struct ClientQueries ClientQueries;
Result(ClientQueries*) ClientQueries_compile(tsqlite_connection* db);
void ClientQueries_free(ClientQueries* self);
typedef struct SavedServer {
str address;
str pk_base64;
str name;
str description;
} SavedServer;
List_declare(SavedServer);
#define SavedServer_construct(ADDR, PK, NAME, DESC) ((SavedServer){ \
.address = ADDR, .pk_base64 = PK, .name = NAME, .description = DESC })
void SavedServer_destroy(SavedServer* self);
/// @return true if new row was created
Result(bool) SavedServer_createOrUpdate(ClientQueries* q, SavedServer* server);
/// @param dst_list there SavedServer values are pushed
Result(void) SavedServer_getAll(ClientQueries* q, List(SavedServer)* dst_list);
Result(bool) SavedServer_exists(ClientQueries* q, str address);
/// @return true if provided key and saved key match
Result(bool) SavedServer_comparePublicKey(ClientQueries* q, str address, str pk_base64);