#pragma once

// C++
#include <string>

// SQLite
#include "CppSQLite3.h"

/*
 * Optimization settings
 */

#include <sstream>
#include <iostream>

 // Enable this to cache all entries in each table for fast access, comes with more memory cost
 //#define CDCLIENT_CACHE_ALL

 // Enable this to skip some unused columns in some tables
#define UNUSED(v)

/*!
  \file CDClientDatabase.hpp
  \brief An interface between the CDClient.sqlite file and the server
 */

 //! The CDClient Database namespace
namespace CDClientDatabase {

	//! Opens a connection with the CDClient
	/*!
	  \param filename The filename
	 */
	void Connect(const std::string& filename);

	//! Queries the CDClient
	/*!
	  \param query The query
	  \return The results of the query
	 */
	CppSQLite3Query ExecuteQuery(const std::string& query);

	//! Queries the CDClient and parses arguments
	/*!
	  \param query The query with formatted arguments
	  \return prepared SQLite Statement
	*/
	CppSQLite3Statement CreatePreppedStmt(const std::string& query);
};