1
0
mirror of https://github.com/haiwen/ccnet-server.git synced 2025-09-03 05:44:19 +00:00

Add rpc for searching group by name

This commit is contained in:
cuihaikuo
2017-01-17 15:15:52 +08:00
parent 0f8c81a81d
commit c1f9dcd7fe
5 changed files with 90 additions and 0 deletions

View File

@@ -783,3 +783,61 @@ ccnet_group_manager_set_group_creator (CcnetGroupManager *mgr,
}
GList *
ccnet_group_manager_search_groups (CcnetGroupManager *mgr,
const char *keyword,
int start, int limit)
{
CcnetDB *db = mgr->priv->db;
GList *ret = NULL;
int rc;
char *db_patt = g_strdup_printf ("%%%s%%", keyword);
if (ccnet_db_type(db) == CCNET_DB_TYPE_PGSQL) {
if (start == -1 && limit == -1)
rc = ccnet_db_statement_foreach_row (db,
"SELECT group_id, group_name, "
"creator_name, timestamp "
"FROM \"Group\" WHERE group_name LIKE ?",
get_all_ccnetgroups_cb, &ret,
1, "string", db_patt);
else
rc = ccnet_db_statement_foreach_row (db,
"SELECT group_id, group_name, "
"creator_name, timestamp "
"FROM \"Group\" WHERE group_name LIKE ? "
"LIMIT ? OFFSET ?",
get_all_ccnetgroups_cb, &ret,
3, "string", db_patt,
"int", limit, "int", start);
} else {
if (start == -1 && limit == -1)
rc = ccnet_db_statement_foreach_row (db,
"SELECT group_id, group_name, "
"creator_name, timestamp "
"FROM `Group` WHERE group_name LIKE ?",
get_all_ccnetgroups_cb, &ret,
1, "string", db_patt);
else
rc = ccnet_db_statement_foreach_row (db,
"SELECT group_id, group_name, "
"creator_name, timestamp "
"FROM `Group` WHERE group_name LIKE ? "
"LIMIT ? OFFSET ?",
get_all_ccnetgroups_cb, &ret,
3, "string", db_patt,
"int", limit, "int", start);
}
g_free (db_patt);
if (rc < 0) {
while (ret != NULL) {
g_object_unref (ret->data);
ret = g_list_delete_link (ret, ret);
}
return NULL;
}
return g_list_reverse (ret);
}