/*
 * Kangaroo Punch MultiPlayer Game Server Mark II
 * Copyright (C) 2020-2021  Scott Duensing
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 */


#ifndef DATABASE_H
#define DATABASE_H


#include "os.h"
#include "game.h"


#define DB_CONFIG_ITEM_SIZE  1024


typedef struct DbClientConfigS {
	char *name;
	char *data;
} DbClientConfigT;

typedef struct DbFileInfoS {
	uint64_t  id;
	char     *path;
	uint64_t  length;
	char     *sha;
	char     *modified;
	uint8_t   authenticated;
	uint8_t   touched;
} DbFileInfoT;


uint8_t           dbConnect(char *host, uint16_t port, char *database, char *user, char *password);
void              dbClientConfigRelease(DbClientConfigT **config);
DbClientConfigT **dbClientConfigGet(void);
uint8_t           dbDisconnect(void);
DbFileInfoT      *dbFileInfoGet(char *vpath);
void              dbFileInfoRelease(DbFileInfoT **info);
void              dbGameRelease(GameT **game);
GameT           **dbGamesGet(void);
uint8_t           dbSettingsStringGet(char *host, char *key, char *value, uint32_t max);
uint8_t           dbSettingsValueGet(char *host, char *key, int32_t *value);
uint8_t           dbUpdateFileData(char *file, uint64_t len, char *time);
uint8_t           dbUpdateFilesFinish(void);
uint8_t           dbUpdateFilesStart(void);
uint8_t           dbUserCreate(char *first, char *last, char *user, char *pass, char *email);
uint8_t           dbUserEmailExists(char *email);
uint8_t           dbUserLogin(char *user, char *password);
uint8_t           dbUserNameExists(char *user);


#endif // DATABASE_H
