
#ifndef _G_SQL_H_
#define _G_SQL_H_

#define MAX_SQL_RESULT				4096
#define SQL_ENABLE_FOREIGN_KEY_CONSTRAINTS 	"PRAGMA foreign_keys = ON;"
#define SQL_BEGIN_TRANSACTION 			"BEGIN TRANSACTION"
#define SQL_ROLLBACK_TRANSACTION 		"ROLLBACK TRANSACTION"
#define SQL_COMMIT_TRANSACTION 			"COMMIT TRANSACTION"
#define SQL_USER_CREATEUSERTABLE 		"CREATE TABLE IF NOT EXISTS rpgx_users ( \
							id INTEGER PRIMARY KEY AUTOINCREMENT, \
							username TEXT NOT NULL , \
							password TEXT NOT NULL \
							)"
#define SQL_USER_CREATERIGHTSTABLE 		"CREATE TABLE IF NOT EXISTS rpgx_userRights ( \
							id INT NOT NULL PRIMARY KEY, \
							admin BIT NOT NULL, \
							rights LONG NOT NULL, \
							FOREIGN KEY(id) REFERENCES rpgx_users(id) \
							)"
#define SQL_USER_DELETE 			"DELETE FROM rpgx_users WHERE username = :UNAME"
#define SQL_USER_DELTE_RIGHTS 			"DELETE FROM rpgx_userRights WHERE id = :ID"
#define SQL_USER_ADD 				"INSERT INTO rpgx_users VALUES(NULL,:USERNAME,:PASSWORD)"
#define SQL_USER_ADD_RIGHTS 			"INSERT INTO rpgx_userRights VALUES(:ID, 0, 0)"
#define SQL_USER_MOD_RIGHTS 			"UPDATE rpgx_userRights SET rights = :RIGHTS WHERE id = :ID"
#define SQL_USER_GET_RIGHTS 			"SELECT rights FROM rpgx_userRights WHERE id = :ID"
#define SQL_USER_CHECK_ADMIN 			"SELECT admin FROM rpgx_userRights WHERE id = :ID"
#define SQL_USER_GET_PASSWORD 			"SELECT password FROM rpgx_users WHERE id = :ID"
#define SQL_USER_SET_PASSWORD 			"UPDATE rpgx_users SET password = :PASSWORD WHERE id = :ID"
#define SQL_USER_GET_UID 			"SELECT id FROM rpgx_users WHERE username = :UNAME"
#define SQL_USER_LOGIN 				"SELECT id FROM rpgx_users WHERE username = :UNAME AND password = :PASSWORD"

/* Okay. I think this list is way too long and some things should be put together. Here is the original list for reference.
typedef enum {
	SQLF_GIVE				= 1,
	SQLF_GOD				= 2,
	SQLF_NOCLIP				= 4,
	SQLF_CLOAK				= 8,
	SQLF_EVOSUIT			= 16,
	SQLF_FLIGHT				= 32,
	SQLF_FORCENAME			= 64, //now SQLF_FORCEPARM = 64
	SQLF_FORCEKILL			= 128,
	SQLF_KICK				= 256,
	SQLF_DRAG				= 512,
	SQLF_DISARM				= 1024,
	SQLF_FORCERANK			= 2048, //now SQLF_FORCEPARM = 64
	SQLF_REVIVE				= 4096,
	SQLF_NOOB				= 8192,
	SQLF_MESSAGE			= 16384,
	SQLF_FORCEMODEL			= 32768, //now SQLF_FORCEPARM = 64
	SQLF_MUSIC				= 65536,
	SQLF_SOUND				= 131072, //now SQLF_MUSIC = 65536
	SQLF_USEENT				= 262144,
	SQLF_BEAM				= 524288,
	SQLF_FORCEPLAYER		= 1048576, //now SQLF_FORCEPARM = 64
	SQLF_FX					= 2097152,
	SQLF_CHARS				= 4194304,
	SQLF_CLAMP				= 8388608,
	SQLF_LOCK				= 16777216,
	SQLF_FFSTUFF			= 33554432,
	SQLF_ALERT				= 67108864,
	SQLF_TESS				= 134217728,
	SQLF_FORCECLASS			= 268435456, //now SQLF_FORCEPARM = 64
	SQLF_FORCEVOTE			= 536870912,
	SQLF_SHAKE				= 1073741824, //now SQLF_FX = 2097152
	//SQLF_ENTLIST			= 2147483648 // that is to big ... using SQLF_USEENT for entitylist as it makes sense
} sql_userflags;*/

typedef enum {
	SQLF_GIVE				= 1,
	SQLF_GOD				= 2,
	SQLF_NOCLIP				= 4,
	SQLF_CLOAK				= 8,
	SQLF_EVOSUIT			= 16,
	SQLF_FLIGHT				= 32,
	SQLF_FORCEPARM			= 64,
	SQLF_FORCEKILL			= 128,
	SQLF_KICK				= 256,
	SQLF_DRAG				= 512,
	SQLF_DISARM				= 1024,
	SQLF_SMS				= 2048, //Shiphealth, Selfdestruct and associated
	SQLF_REVIVE				= 4096,
	SQLF_NOOB				= 8192,
	SQLF_MESSAGE			= 16384,
	SQLF_DEBUG				= 32768, //Debugging Tools
	SQLF_MUSIC				= 65536,
	//unused				= 131072,
	SQLF_USEENT				= 262144,
	SQLF_BEAM				= 524288,
	//unused				= 1048576,
	SQLF_FX					= 2097152,
	SQLF_CHARS				= 4194304,
	SQLF_CLAMP				= 8388608,
	SQLF_LOCK				= 16777216,
	SQLF_FFSTUFF			= 33554432,
	SQLF_ALERT				= 67108864,
	SQLF_TESS				= 134217728,
	//unused				= 268435456,
	SQLF_FORCEVOTE			= 536870912
	//unused				= 1073741824
	//Maximum Value
} sql_userflags;

#endif // _G_SQL_H_
