1
0
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:
feiniks 2022-09-05 12:29:17 +08:00 committed by GitHub
parent 955d4c5277
commit 20409feb2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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) {