PokerUnicorn
Loading...
Searching...
No Matches
account.h
Go to the documentation of this file.
1/*
2 * PokerUnicorn Server
3 * This project uses test network, NO real coin or NO real money involved.
4 * Copyright (C) 2023, Oğuzhan Eroğlu <meowingcate@gmail.com> (https://meowingcat.io)
5 * Licensed under GPLv3 License
6 * See LICENSE for more info
7 */
8
9#pragma once
10
22#include <stdint.h>
23#include <pthread.h>
24#include <stdbool.h>
25
26#include <libpq-fe.h>
27
28#include "sugar.h"
29#include "ref.h"
30#include "string.h"
31
32#define PKRSRV_ACCOUNT_SELECT_COLUMNS " id, id_token, name, avatar, balance, xmr_deposit_address, locked_balance, total_deposited, xmr_deposit_address_index, xmr_height "
33#define PKRSRV_ACCOUNT_SELECT_COLUMNS_COUNT 11
34#define PKRSRV_ACCOUNT_SELECT_COLUMNS_ARRAY { "id", "id_token", "name", "avatar", "balance", "xmr_deposit_address", "locked_balance", "total_deposited", "xmr_deposit_address_index", "xmr_height", NULL }
35
36typedef struct pkrsrv_account pkrsrv_account_t;
37
44 uint64_t id;
45 pkrsrv_string_t* id_token;
46 pkrsrv_string_t* name;
47 pkrsrv_string_t* avatar;
48 pkrsrv_string_t* xmr_deposit_address;
50 uint64_t balance;
53 uint64_t xmr_height;
54 void* owner;
55 void (*on_updated)(pkrsrv_account_t* account, void* param);
57};
58
59typedef struct pkrsrv_account_new_params {
60 uint64_t id;
61 pkrsrv_string_t* id_token;
62 pkrsrv_string_t* name;
63 pkrsrv_string_t* avatar;
64 pkrsrv_string_t* xmr_deposit_address;
66 uint64_t balance;
69 uint64_t xmr_height;
71
73void pkrsrv_account_free(pkrsrv_account_t* player);
74
78bool pkrsrv_account_set_balance(pkrsrv_account_t* account, uint64_t balance);
79
83void pkrsrv_account_get_balance(pkrsrv_account_t* account, uint64_t balance);
84
85typedef struct pkrsrv_account_create_params {
86 pkrsrv_string_t* id_token;
87 pkrsrv_string_t* name;
88 pkrsrv_string_t* avatar;
89 pkrsrv_string_t* password;
90 pkrsrv_string_t* xmr_deposit_address;
92 uint64_t balance;
95 uint64_t xmr_height;
97typedef struct pkrsrv_account_create_result {
98 pkrsrv_account_t* account;
102
103typedef struct pkrsrv_account_update_params {
104 uint64_t id;
105 pkrsrv_string_t* name;
106 pkrsrv_string_t* avatar;
108typedef struct pkrsrv_account_update_result {
109 bool is_ok;
113bool pkrsrv_account_update_balance(PGconn* pg_conn, pkrsrv_account_t* account, uint64_t balance);
114bool pkrsrv_account_add_balance(PGconn* pg_conn, pkrsrv_account_t* account, uint64_t amount);
115bool pkrsrv_account_update_locked_balance(PGconn* pg_conn, pkrsrv_account_t* account, uint64_t locked_balance);
116bool pkrsrv_account_remove_locked_balance(PGconn* pg_conn, pkrsrv_account_t* account, uint64_t amount);
117bool pkrsrv_account_lock_balance(PGconn* pg_conn, pkrsrv_account_t* account, uint64_t amount);
118bool pkrsrv_account_unlock_balance(PGconn* pg_conn, pkrsrv_account_t* account, uint64_t amount);
120
121bool pkrsrv_account_update_xmr_height(PGconn* pg_conn, pkrsrv_account_t* account, uint64_t xmr_height);
122
123typedef struct pkrsrv_account_getby_credentials_params {
124 pkrsrv_string_t* id_token;
125 pkrsrv_string_t* password;
128
129pkrsrv_account_t* pkrsrv_account_getby_id(PGconn* pg_conn, uint64_t p_id);
130
131void pkrsrv_account_fetch(PGconn* pg_conn, pkrsrv_account_t* p_account);
132
140typedef struct pkrsrv_account_iterator {
142 pkrsrv_account_t* current;
143 int index;
144 int count;
145 PGresult* query_result;
147
156
165
179pkrsrv_account_iterator_t* pkrsrv_account_iterator_query(PGconn* pg_conn, pkrsrv_string_t* query, char** params, int params_length);
180
191
pkrsrv_string_t * name
Definition account.h:46
pkrsrv_string_t * xmr_deposit_address
Definition account.h:90
pkrsrv_string_t * avatar
Definition account.h:88
bool is_avatar_too_big
Definition account.h:110
uint64_t id
Definition account.h:60
uint64_t xmr_height
Definition account.h:53
bool is_ok
Definition account.h:109
uint64_t id
Definition account.h:44
pkrsrv_account_t * account
Definition account.h:98
pkrsrv_string_t * id_token
Definition account.h:124
pkrsrv_string_t * name
Definition account.h:87
uint64_t xmr_height
Definition account.h:69
pkrsrv_string_t * avatar
Definition account.h:106
pkrsrv_string_t * avatar
Definition account.h:47
uint64_t xmr_deposit_address_index
Definition account.h:65
pkrsrv_string_t * id_token
Definition account.h:86
uint64_t balance
Definition account.h:92
pkrsrv_string_t * id_token
Definition account.h:61
uint64_t xmr_height
Definition account.h:95
uint64_t total_deposited
Definition account.h:94
void * on_updated_param
Definition account.h:56
uint64_t total_deposited
Definition account.h:52
void * owner
Definition account.h:54
uint64_t total_deposited
Definition account.h:68
uint64_t xmr_deposit_address_index
Definition account.h:91
pkrsrv_string_t * xmr_deposit_address
Definition account.h:64
pkrsrv_string_t * name
Definition account.h:105
pkrsrv_string_t * id_token
Definition account.h:45
uint64_t locked_balance
Definition account.h:67
uint64_t locked_balance
Definition account.h:51
pkrsrv_string_t * password
Definition account.h:125
uint64_t id
Definition account.h:104
uint64_t balance
Definition account.h:66
uint64_t balance
Definition account.h:50
bool is_already_exists
Definition account.h:99
uint64_t locked_balance
Definition account.h:93
uint64_t xmr_deposit_address_index
Definition account.h:49
pkrsrv_string_t * xmr_deposit_address
Definition account.h:48
void(* on_updated)(pkrsrv_account_t *account, void *param)
Definition account.h:55
pkrsrv_string_t * password
Definition account.h:89
pkrsrv_string_t * name
Definition account.h:62
pkrsrv_string_t * avatar
Definition account.h:63
pkrsrv_account_t * pkrsrv_account_getby_credentials(PGconn *pg_conn, pkrsrv_account_getby_credentials_params_t params)
void pkrsrv_account_iterator_free(pkrsrv_account_iterator_t *iterator)
Frees the memory occupied by an account iterator.
bool pkrsrv_account_update_xmr_height(PGconn *pg_conn, pkrsrv_account_t *account, uint64_t xmr_height)
pkrsrv_account_t * pkrsrv_account_new(pkrsrv_account_new_params_t params)
pkrsrv_account_iterator_t * pkrsrv_account_iterator_query(PGconn *pg_conn, pkrsrv_string_t *query, char **params, int params_length)
Queries the database for account objects.
void pkrsrv_account_get_balance(pkrsrv_account_t *account, uint64_t balance)
void pkrsrv_account_free(pkrsrv_account_t *player)
bool pkrsrv_account_update_locked_balance(PGconn *pg_conn, pkrsrv_account_t *account, uint64_t locked_balance)
pkrsrv_account_t * pkrsrv_account_getby_id(PGconn *pg_conn, uint64_t p_id)
pkrsrv_account_update_result_t pkrsrv_account_update(PGconn *pg_conn, pkrsrv_account_update_params_t params)
bool pkrsrv_account_unlock_balance(PGconn *pg_conn, pkrsrv_account_t *account, uint64_t amount)
bool pkrsrv_account_update_balance(PGconn *pg_conn, pkrsrv_account_t *account, uint64_t balance)
bool pkrsrv_account_add_balance(PGconn *pg_conn, pkrsrv_account_t *account, uint64_t amount)
pkrsrv_account_iterator_t * pkrsrv_account_iterator_new()
Creates a new account iterator.
bool pkrsrv_account_iterator_next(pkrsrv_account_iterator_t *iterator)
Moves the iterator to the next account.
bool pkrsrv_account_remove_locked_balance(PGconn *pg_conn, pkrsrv_account_t *account, uint64_t amount)
pkrsrv_account_create_result_t pkrsrv_account_create(PGconn *pg_conn, pkrsrv_account_create_params_t params)
bool pkrsrv_account_lock_balance(PGconn *pg_conn, pkrsrv_account_t *account, uint64_t amount)
void pkrsrv_account_fetch(PGconn *pg_conn, pkrsrv_account_t *p_account)
bool pkrsrv_account_revert_locked_balanes(PGconn *pg_conn)
bool pkrsrv_account_set_balance(pkrsrv_account_t *account, uint64_t balance)
Account object.
Definition account.h:42
Definition account.h:85
Definition account.h:97
Account iterator object.
Definition account.h:140
Definition account.h:59
Definition account.h:103
Definition account.h:108
#define PKRSRV_REF_COUNTEDIFY()
Makes a structure reference-counted.
Definition ref.h:70