kpmpgsmkii/server/src/database.h

93 lines
2.6 KiB
C

/*
* 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"
#define DB_CONFIG_ITEM_SIZE 1024
typedef enum DbGameTypeE {
GAME_TYPE_UNKNOWN = 0,
GAME_TYPE_DOOR,
GAME_TYPE_SERIAL,
GAME_TYPE_IPX,
GAME_TYPE_FICTION
} DbGameTypeT;
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;
typedef struct DbGameS {
char *title;
char *publisher;
char *developer;
char *description;
char *releaseDate;
char *rating;
char *series;
char *origin;
char *shortName;
char *worksWith;
DbGameTypeT type;
uint8_t maxPlayers;
uint8_t joinable;
uint8_t screens;
uint8_t boxes;
} DbGameT;
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(DbGameT **game);
DbGameT **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