#ifndef Datenbank_H
#define Datenbank_H

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

using namespace Framework;
using namespace sql;

namespace Admin_Recht
{
	const int KSStarten = 53;
	const int KSBeenden = 54;
	const int KSPausieren = 55;
	const int KSMKChange = 56;
}

struct AHDaten;

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

public:
	// Konstruktor
	KSDatenbank( InitDatei *zIni );
	// Destruktor
	~KSDatenbank();
	// 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 setServerStatus( int id, int status );
	bool setMaxKarten( int id, int maxK );
	bool serverIstNichtPausiert( int id );
	bool proveKarte( int id, int sNum );
    int getUpdateKarte( int serverId );
    bool endUpdateKarte( int karteId );
    bool getEditorServerPortIp( int karteId, int *port, Text *ip );
    bool setKarteSpielerAnzahl( int karteId, int sAnz );
	// constant
	Text *getLetzterFehler() const;
	// Reference Counting
	KSDatenbank *getThis();
	KSDatenbank *release();
};

#endif