#pragma once #include "../acl_cpp_define.hpp" #if !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE) namespace acl { class ACL_CPP_API pgsql_conf { public: /** * 构造函数 * @param dbaddr {const char*} 服务器地址,地址格式为:ip:port,或 * unix_domain_path,当为 unix 域套接口时,应为 unix 域套接口文件 * 所在目录且不包含文件名,假设 postgresql 正在监听 unix 域套接口 * 的文件为:/tmp/.s.PGSQL.5432,则 dbaddr 地址应设为 /tmp * 注意:注意在连接 unix 域套接口的与 mysql 的不同,mysql 的域套接 * 口为全路径 * @param dbname {const char*} 数据库名 */ pgsql_conf(const char* dbaddr, const char* dbname); /** * 拷贝构造函数 * @param conf {const pgsql_conf&} 内部将会创建新配置对象并拷贝该参数 * 里的内容项 */ pgsql_conf(const pgsql_conf& conf); ~pgsql_conf(void); /** * 设置连接数据库时的用户账号,当不调用此方法时则不需账号 * @param dbuser {const char*} 用户账号,为非空字符串时才有效 * @return {pgsql_conf&} */ pgsql_conf& set_dbuser(const char* dbuser); /** * 设置连接数据库时的账号密码,当不调用此方法时则不设密码 * @param dbpass {const char*} 账号密码,为非空字符串时才有效 * @return {pgsql_conf&} */ pgsql_conf& set_dbpass(const char* dbpass); /** * 设置数据库连接池最大连接上限 * @param dblimit {size_t} 连接池最大连接数限制,当为 0 时则不限制 * @return {pgsql_conf&} */ pgsql_conf& set_dblimit(size_t dblimit); /** * 设置连接数据库的超时时间 * @param timeout {int} * @return {pgsql_conf&} */ pgsql_conf& set_conn_timeout(int timeout); /** * 设置读取数据库结果的超时时间 * @param timeout {int} * @return {pgsql_conf&} */ pgsql_conf& set_rw_timeout(int timeout); /** * 设置数据库连接的字符集 * @param charset {const char*} * @return {pgsql_conf&} */ pgsql_conf& set_charset(const char* charset); const char* get_dbaddr() const { return dbaddr_; } const char* get_dbname() const { return dbname_; } const char* get_dbkey() const { return dbkey_; } const char* get_dbuser() const { return dbuser_; } const char* get_dbpass() const { return dbpass_; } size_t get_dblimit() const { return dblimit_; } int get_conn_timeout() const { return conn_timeout_; } int get_rw_timeout() const { return rw_timeout_; } const char* get_charset() const { return charset_; } private: char* dbaddr_; char* dbname_; char* dbkey_; char* dbuser_; char* dbpass_; char* charset_; size_t dblimit_; int conn_timeout_; int rw_timeout_; }; } // namespace acl #endif // !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE)