#ifndef Datenbank_H
#define Datenbank_H

#include <sql.h>
#include <Text.h>
#include <InitDatei.h>

using namespace Framework;
using namespace sql;

namespace Admin_Recht
{
	const int HSStarten = 0x00000029;
	const int HSBeenden = 0x0000002A;
	const int HSPausieren = 0x0000002B;
	const int HSMCChange = 0x0000002C;
	const int HSMSChange = 0x0000002D;
}

class HSDatenbank
{
private:
	Datenbank *datenbank;
	CRITICAL_SECTION cs;
	int ref;

public:
	// Konstruktor
	HSDatenbank( InitDatei *zIni );
	// Destruktor
	~HSDatenbank();
	// nicht constant
	void lock();
	void unlock();
	int istAdministrator( const char *name, const char *passwort );
	bool adminHatRecht( int id, int recht );
	bool proveKlient( int num, int sNum );
	Text *getKlientKey( int cId );
	void unregisterKlient( int num, int sNum );
	bool serverAnmelden( InitDatei *zIni );
	bool setServerStatus( int id, int status );
	bool setMaxClients( int id, int maxC );
	bool setMaxSpiele( int id, int maxS );
	int getAdminPort( int id );
	bool serverIstNichtPausiert( int id );
	bool getSpielServerPortIp( int id, short *port, Text *ip );
	bool istSpielHistorieFrei( int id );
	bool addSpielHistorie( int server, int spiel );
	// constant
	Text *getLetzterFehler() const;
	// Reference Counting
	HSDatenbank *getThis();
	HSDatenbank *release();
};

#endif