1
0
mirror of https://github.com/haiwen/ccnet-server.git synced 2025-09-01 12:56:27 +00:00

Support multi-tier groups.

This commit is contained in:
cuihaikuo
2018-03-17 15:16:30 +08:00
parent ec994baa86
commit b98c73ba23
9 changed files with 404 additions and 65 deletions

View File

@@ -613,6 +613,7 @@ get_org_groups (CcnetDBRow *row, void *data)
const char *group_name = ccnet_db_row_get_column_text (row, 1);
const char *creator_name = ccnet_db_row_get_column_text (row, 2);
gint64 ts = ccnet_db_row_get_column_int64 (row, 3);
int parent_group_id = ccnet_db_row_get_column_int (row, 4);
group = g_object_new (CCNET_TYPE_GROUP,
"id", group_id,
@@ -620,6 +621,7 @@ get_org_groups (CcnetDBRow *row, void *data)
"creator_name", creator_name,
"timestamp", ts,
"source", "DB",
"parent_group_id", parent_group_id,
NULL);
*plist = g_list_prepend (*plist, group);
@@ -627,6 +629,27 @@ get_org_groups (CcnetDBRow *row, void *data)
return TRUE;
}
GList *
ccnet_org_manager_get_org_top_groups (CcnetOrgManager *mgr, int org_id, GError **error)
{
CcnetDB *db = mgr->priv->db;
GList *ret = NULL;
char *sql;
int rc;
sql = "SELECT g.group_id, group_name, creator_name, timestamp, parent_group_id FROM "
"`OrgGroup` o, `Group` g WHERE o.group_id = g.group_id AND "
"org_id=? AND parent_group_id=-1 ORDER BY timestamp DESC";
rc = ccnet_db_statement_foreach_row (db, sql,
get_org_groups, &ret,
1, "int", org_id);
if (rc < 0)
return NULL;
return g_list_reverse (ret);
}
GList *
ccnet_org_manager_get_org_groups (CcnetOrgManager *mgr,
int org_id,
@@ -639,14 +662,14 @@ ccnet_org_manager_get_org_groups (CcnetOrgManager *mgr,
int rc;
if (limit == -1) {
sql = "SELECT g.group_id, group_name, creator_name, timestamp FROM "
sql = "SELECT g.group_id, group_name, creator_name, timestamp, parent_group_id FROM "
"OrgGroup o, `Group` g WHERE o.group_id = g.group_id AND org_id = ?";
rc = ccnet_db_statement_foreach_row (db,
sql,
get_org_groups, &ret,
1, "int", org_id);
} else {
sql = "SELECT g.group_id, group_name, creator_name, timestamp FROM "
sql = "SELECT g.group_id, group_name, creator_name, timestamp, parent_group_id FROM "
"OrgGroup o, `Group` g WHERE o.group_id = g.group_id AND org_id = ? "
"LIMIT ? OFFSET ?";
rc = ccnet_db_statement_foreach_row (db,