]> jfr.im git - irc/quakenet/newserv.git/blame - trusts/db-slave.c
trusts: Fix db migration for PostgreSQL.
[irc/quakenet/newserv.git] / trusts / db-slave.c
CommitLineData
82a316e7
CP
1#include "../dbapi2/dbapi2.h"
2#include "../core/error.h"
3#include "trusts.h"
4
5extern DBAPIConn *trustsdb;
6
7void createtrusttables(int);
8void trusts_replication_complete(int);
9
10void 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
16static 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
31void 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");
ca6416b1 38 trustsdb->squery(trustsdb, "ALTER TABLE ? RENAME TO groups", "T", "replication_groups");
82a316e7 39 trustsdb->squery(trustsdb, "DROP TABLE ?", "T", "hosts");
ca6416b1 40 trustsdb->squery(trustsdb, "ALTER TABLE ? RENAME TO hosts", "T", "replication_hosts");
82a316e7
CP
41 trustsdb->query(trustsdb, tr_complete, NULL, "COMMIT", "");
42}