mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-07-20 10:09:55 +00:00
Fix delete device error (#575)
Co-authored-by: 杨赫然 <heran.yang@seafile.com>
This commit is contained in:
parent
955d4c5277
commit
20409feb2e
@ -1714,6 +1714,7 @@ seaf_repo_manager_delete_repo_tokens_by_peer_id (SeafRepoManager *mgr,
|
|||||||
const char *template;
|
const char *template;
|
||||||
GList *token_list = NULL;
|
GList *token_list = NULL;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
int db_type = seaf_db_type (mgr->seaf->db);
|
||||||
|
|
||||||
template = "SELECT u.token "
|
template = "SELECT u.token "
|
||||||
"FROM RepoUserToken u, RepoTokenPeerInfo p "
|
"FROM RepoUserToken u, RepoTokenPeerInfo p "
|
||||||
@ -1730,6 +1731,7 @@ seaf_repo_manager_delete_repo_tokens_by_peer_id (SeafRepoManager *mgr,
|
|||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
if (db_type == SEAF_DB_TYPE_MYSQL) {
|
||||||
rc = seaf_db_statement_query (mgr->seaf->db, "DELETE u.*, p.* "
|
rc = seaf_db_statement_query (mgr->seaf->db, "DELETE u.*, p.* "
|
||||||
"FROM RepoUserToken u, RepoTokenPeerInfo p "
|
"FROM RepoUserToken u, RepoTokenPeerInfo p "
|
||||||
"WHERE u.token=p.token AND "
|
"WHERE u.token=p.token AND "
|
||||||
@ -1739,6 +1741,52 @@ seaf_repo_manager_delete_repo_tokens_by_peer_id (SeafRepoManager *mgr,
|
|||||||
g_set_error (error, SEAFILE_DOMAIN, SEAF_ERR_INTERNAL, "DB error");
|
g_set_error (error, SEAFILE_DOMAIN, SEAF_ERR_INTERNAL, "DB error");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
} else if (db_type == SEAF_DB_TYPE_SQLITE) {
|
||||||
|
GString *sql = g_string_new ("");
|
||||||
|
GList *iter;
|
||||||
|
int i = 0;
|
||||||
|
char *token;
|
||||||
|
|
||||||
|
g_string_append_printf (sql, "DELETE FROM RepoUserToken WHERE email = '%s' AND token IN (", email);
|
||||||
|
for (iter = token_list; iter; iter = iter->next) {
|
||||||
|
token = iter->data;
|
||||||
|
if (i == 0)
|
||||||
|
g_string_append_printf (sql, "'%s'", token);
|
||||||
|
else
|
||||||
|
g_string_append_printf (sql, ", '%s'", token);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
g_string_append (sql, ")");
|
||||||
|
|
||||||
|
rc = seaf_db_statement_query (mgr->seaf->db, sql->str, 0);
|
||||||
|
if (rc < 0) {
|
||||||
|
g_string_free (sql, TRUE);
|
||||||
|
g_set_error (error, SEAFILE_DOMAIN, SEAF_ERR_INTERNAL, "DB error");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
g_string_free (sql, TRUE);
|
||||||
|
|
||||||
|
sql = g_string_new ("");
|
||||||
|
g_string_append_printf (sql, "DELETE FROM RepoTokenPeerInfo WHERE peer_id = '%s' AND token IN (", peer_id);
|
||||||
|
i = 0;
|
||||||
|
for (iter = token_list; iter; iter = iter->next) {
|
||||||
|
token = iter->data;
|
||||||
|
if (i == 0)
|
||||||
|
g_string_append_printf (sql, "'%s'", token);
|
||||||
|
else
|
||||||
|
g_string_append_printf (sql, ", '%s'", token);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
g_string_append (sql, ")");
|
||||||
|
|
||||||
|
rc = seaf_db_statement_query (mgr->seaf->db, sql->str, 0);
|
||||||
|
if (rc < 0) {
|
||||||
|
g_string_free (sql, TRUE);
|
||||||
|
g_set_error (error, SEAFILE_DOMAIN, SEAF_ERR_INTERNAL, "DB error");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
g_string_free (sql, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user