]> jfr.im git - irc/quakenet/newserv.git/blob - trusts/db-slave.c
Merge default.
[irc/quakenet/newserv.git] / trusts / db-slave.c
1 #include "../dbapi2/dbapi2.h"
2 #include "../core/error.h"
3 #include "trusts.h"
4
5 extern DBAPIConn *trustsdb;
6
7 void createtrusttables(int);
8 void trusts_replication_complete(int);
9
10 void trusts_replication_createtables(void) {
11 createtrusttables(TABLES_REPLICATION);
12 trustsdb->squery(trustsdb, "DELETE FROM ?", "T", "replication_groups");
13 trustsdb->squery(trustsdb, "DELETE FROM ?", "T", "replication_hosts");
14 }
15
16 static void tr_complete(const DBAPIResult *r, void *tag) {
17 if(!r) {
18 trusts_replication_complete(1);
19 } else {
20 if(!r->success) {
21 Error("trusts_slave", ERR_ERROR, "A error occured executing the rename table query.");
22 trusts_replication_complete(2);
23 } else {
24 Error("trusts_slave", ERR_INFO, "Migration table copying complete.");
25 trusts_replication_complete(0);
26 }
27 r->clear(r);
28 }
29 }
30
31 void trusts_replication_swap(void) {
32 trusts_closedb(0);
33
34 Error("trusts_slave", ERR_INFO, "Copying tables...");
35
36 trustsdb->squery(trustsdb, "BEGIN TRANSACTION", "");
37 trustsdb->squery(trustsdb, "DROP TABLE ?", "T", "groups");
38 trustsdb->squery(trustsdb, "ALTER TABLE ? RENAME TO ?", "Ts", "replication_groups", "groups");
39 trustsdb->squery(trustsdb, "DROP TABLE ?", "T", "hosts");
40 trustsdb->squery(trustsdb, "ALTER TABLE ? RENAME TO ?", "Ts", "replication_hosts", "hosts");
41 trustsdb->query(trustsdb, tr_complete, NULL, "COMMIT", "");
42 }