[glom] Avoid some repetition of some CREATE GROUP and ALTER GROUP queries.
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glom] Avoid some repetition of some CREATE GROUP and ALTER GROUP queries.
- Date: Tue, 8 Nov 2011 20:55:46 +0000 (UTC)
commit 8fcb1f80e3666b0607d84aa843cd198ec394310c
Author: Murray Cumming <murrayc murrayc com>
Date: Tue Nov 8 21:55:39 2011 +0100
Avoid some repetition of some CREATE GROUP and ALTER GROUP queries.
* glom/libglom/db_utils.[h|cc]: Added build_query_create_group() and
build_query_add_user_to_group() to avoid repeating the code.
* glom/base_db.cc:
* glom/mode_design/users/dialog_groups_list.cc:
* glom/mode_design/users/dialog_users_list.cc: Use them.
ChangeLog | 10 ++++++
glom/base_db.cc | 9 +-----
glom/libglom/db_utils.cc | 44 ++++++++++++++++++++-----
glom/libglom/db_utils.h | 4 ++
glom/mode_design/users/dialog_groups_list.cc | 2 +-
glom/mode_design/users/dialog_users_list.cc | 2 +-
6 files changed, 52 insertions(+), 19 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index e7c7e01..bc0d905 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2011-11-08 Murray Cumming <murrayc murrayc com>
+
+ Avoid some repetition of some CREATE GROUP and ALTER GROUP queries.
+
+ * glom/libglom/db_utils.[h|cc]: Added build_query_create_group() and
+ build_query_add_user_to_group() to avoid repeating the code.
+ * glom/base_db.cc:
+ * glom/mode_design/users/dialog_groups_list.cc:
+ * glom/mode_design/users/dialog_users_list.cc: Use them.
+
1.19.19:
2011-11-08 Murray Cumming <murrayc murrayc com>
diff --git a/glom/base_db.cc b/glom/base_db.cc
index e7f6bfa..211d67a 100644
--- a/glom/base_db.cc
+++ b/glom/base_db.cc
@@ -1744,13 +1744,6 @@ bool Base_DB::add_user(const Glib::ustring& user, const Glib::ustring& password,
if(group == GLOM_STANDARD_GROUP_NAME_DEVELOPER)
strQuery += " SUPERUSER CREATEDB CREATEROLE"; //Because SUPERUSER is not "inherited" from groups to members.
-
- //Glib::ustring strQuery = "CREATE USER " + DbUtils::escape_sql_id(user);
- //if(group == GLOM_STANDARD_GROUP_NAME_DEVELOPER)
- // strQuery += " WITH SUPERUSER"; //Because SUPERUSER is not "inherited" from groups to members.
- //strQuery += " PASSWORD '" + password + "'" ; //TODO: Escape the password.
-
-
bool test = DbUtils::query_execute_string(strQuery);
if(!test)
{
@@ -1759,7 +1752,7 @@ bool Base_DB::add_user(const Glib::ustring& user, const Glib::ustring& password,
}
//Add it to the group:
- strQuery = "ALTER GROUP " + DbUtils::escape_sql_id(group) + " ADD USER " + DbUtils::escape_sql_id(user);
+ strQuery = DbUtils::build_query_add_user_to_group(group, user);
test = DbUtils::query_execute_string(strQuery);
if(!test)
{
diff --git a/glom/libglom/db_utils.cc b/glom/libglom/db_utils.cc
index 5a20910..0765fdf 100644
--- a/glom/libglom/db_utils.cc
+++ b/glom/libglom/db_utils.cc
@@ -555,7 +555,8 @@ bool add_standard_groups(Document* document)
//TODO: Escape and quote the user and group names here?
//The "SUPERUSER" here has no effect because SUPERUSER is not "inherited" to member users.
//But let's keep it to make the purpose of this group obvious.
- bool test = query_execute_string("CREATE GROUP " + DbUtils::escape_sql_id(GLOM_STANDARD_GROUP_NAME_DEVELOPER) + " WITH SUPERUSER");
+ bool test = query_execute_string(
+ DbUtils::build_query_create_group(GLOM_STANDARD_GROUP_NAME_DEVELOPER, true /* superuser */));
if(!test)
{
std::cerr << G_STRFUNC << ": CREATE GROUP failed when adding the developer group." << std::endl;
@@ -565,7 +566,7 @@ bool add_standard_groups(Document* document)
//Make sure the current user is in the developer group.
//(If he is capable of creating these groups then he is obviously a developer, and has developer rights on the postgres server.)
const Glib::ustring current_user = ConnectionPool::get_instance()->get_user();
- const Glib::ustring strQuery = "ALTER GROUP " + DbUtils::escape_sql_id(GLOM_STANDARD_GROUP_NAME_DEVELOPER) + " ADD USER " + DbUtils::escape_sql_id(current_user);
+ const Glib::ustring strQuery = build_query_add_user_to_group(GLOM_STANDARD_GROUP_NAME_DEVELOPER, current_user);
test = query_execute_string(strQuery);
if(!test)
{
@@ -638,13 +639,7 @@ bool add_groups_from_document(Document* document)
type_vec_strings::const_iterator iterFind = std::find(database_groups.begin(), database_groups.end(), name);
if(!name.empty() && iterFind == database_groups.end())
{
- Glib::ustring query = "CREATE GROUP " + escape_sql_id(name);
-
- //The "SUPERUSER" here has no effect because SUPERUSER is not "inherited" to member users.
- //But let's keep it to make the purpose of this group obvious.
- if(group.m_developer)
- query += " WITH SUPERUSER";
-
+ const Glib::ustring query = build_query_create_group(name, group.m_developer);
const bool test = query_execute_string(query);
if(!test)
{
@@ -1876,6 +1871,37 @@ Glib::ustring escape_sql_id(const Glib::ustring& id)
return gda_connection->quote_sql_identifier(id);
}
+Glib::ustring build_query_create_group(const Glib::ustring& group, bool superuser)
+{
+ if(group.empty())
+ {
+ std::cerr << G_STRFUNC << ": group is empty" << std::endl;
+ }
+
+ Glib::ustring query = "CREATE GROUP " + escape_sql_id(group);
+
+ //The "SUPERUSER" here has no effect because SUPERUSER is not "inherited" to member users.
+ //But let's keep it to make the purpose of this group obvious.
+ if(superuser)
+ query += " WITH SUPERUSER";
+
+ return query;
+}
+
+Glib::ustring build_query_add_user_to_group(const Glib::ustring& group, const Glib::ustring& user)
+{
+ if(group.empty())
+ {
+ std::cerr << G_STRFUNC << ": group is empty" << std::endl;
+ }
+
+ if(user.empty())
+ {
+ std::cerr << G_STRFUNC << ": user is empty" << std::endl;
+ }
+
+ return "ALTER GROUP " + escape_sql_id(group) + " ADD USER " + escape_sql_id(user);
+}
} //namespace DbUtils
diff --git a/glom/libglom/db_utils.h b/glom/libglom/db_utils.h
index da5e0bf..513cd89 100644
--- a/glom/libglom/db_utils.h
+++ b/glom/libglom/db_utils.h
@@ -151,6 +151,10 @@ bool drop_table(const Glib::ustring& table_name);
*/
Glib::ustring escape_sql_id(const Glib::ustring& id);
+Glib::ustring build_query_create_group(const Glib::ustring& group, bool superuser = false);
+
+Glib::ustring build_query_add_user_to_group(const Glib::ustring& group, const Glib::ustring& user);
+
} //namespace DbUtils
} //namespace Glom
diff --git a/glom/mode_design/users/dialog_groups_list.cc b/glom/mode_design/users/dialog_groups_list.cc
index 6e56334..dc34bc7 100644
--- a/glom/mode_design/users/dialog_groups_list.cc
+++ b/glom/mode_design/users/dialog_groups_list.cc
@@ -255,7 +255,7 @@ void Dialog_GroupsList::on_button_group_new()
if(!group_name.empty())
{
- const Glib::ustring strQuery = "CREATE GROUP " + DbUtils::escape_sql_id(group_name);
+ const Glib::ustring strQuery = DbUtils::build_query_create_group(group_name);
const bool test = DbUtils::query_execute_string(strQuery);
if(!test)
std::cout << "debug: " << G_STRFUNC << ": CREATE GROUP failed." << std::endl;
diff --git a/glom/mode_design/users/dialog_users_list.cc b/glom/mode_design/users/dialog_users_list.cc
index 68bf5cb..7269c78 100644
--- a/glom/mode_design/users/dialog_users_list.cc
+++ b/glom/mode_design/users/dialog_users_list.cc
@@ -204,7 +204,7 @@ void Dialog_UsersList::on_button_user_add()
if(!user.empty())
{
//Add it to the group:
- const Glib::ustring strQuery = "ALTER GROUP " + DbUtils::escape_sql_id(m_combo_group->get_active_text()) + " ADD USER " + DbUtils::escape_sql_id(user);
+ const Glib::ustring strQuery = DbUtils::build_query_add_user_to_group(m_combo_group->get_active_text(), user);
const bool test = DbUtils::query_execute_string(strQuery);
if(!test)
std::cerr << G_STRFUNC << ": ALTER GROUP failed." << std::endl;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]