21#ifndef KICAD_DATABASE_CONNECTION_H
22#define KICAD_DATABASE_CONNECTION_H
47 typedef std::map<std::string, std::any>
ROW;
51 bool aConnectNow =
true );
55 bool aConnectNow =
true );
80 bool CacheTableInfo(
const std::string& aTable,
const std::set<std::string>& aRequiredColumns,
81 const std::set<std::string>& aOptionalColumns = {} );
92 bool SelectOne(
const std::string& aTable,
const std::pair<std::string, std::string>& aWhere,
102 bool SelectAll(
const std::string& aTable,
const std::string& aKey,
103 std::vector<ROW>& aResults );
118 std::string
columnsFor(
const std::string& aTable );
123 std::unique_ptr<nanodbc::connection>
m_conn;
std::string m_connectionString
DATABASE_CONNECTION(const std::string &aConnectionString, int aTimeoutSeconds=DEFAULT_TIMEOUT, bool aConnectNow=true)
std::map< std::string, std::any > ROW
std::map< std::string, std::map< std::string, int > > m_columnCache
Map of table -> map of column name -> data type.
void SetCacheParams(int aMaxSize, int aMaxAge)
bool selectAllAndCache(const std::string &aTable, const std::string &aKey)
The caller must already hold m_queryMutex.
bool SelectAll(const std::string &aTable, const std::string &aKey, std::vector< ROW > &aResults)
Retrieves all rows from a database table.
DATABASE_CONNECTION(const std::string &aDataSourceName, const std::string &aUsername, const std::string &aPassword, int aTimeoutSeconds=DEFAULT_TIMEOUT, bool aConnectNow=true)
std::unique_ptr< DB_CACHE_TYPE > m_cache
static const long DEFAULT_TIMEOUT
void ClearCache(const std::string &aTable)
std::string columnsFor(const std::string &aTable)
DATABASE_CACHE< std::map< std::string, ROW > > DB_CACHE_TYPE
std::unique_ptr< nanodbc::connection > m_conn
bool SelectOne(const std::string &aTable, const std::pair< std::string, std::string > &aWhere, ROW &aResult)
Retrieves a single row from a database table.
std::string GetLastError() const
bool CacheTableInfo(const std::string &aTable, const std::set< std::string > &aRequiredColumns, const std::set< std::string > &aOptionalColumns={})
Caches schema information for a table so that subsequent queries know which columns exist.
std::map< std::string, std::string > m_tables
const char *const traceDatabase