39 lines
1.2 KiB
C
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);
|