mrmBot-Matrix/utils/convertpg.js

33 lines
1.5 KiB
JavaScript

import { config } from "dotenv";
config();
import { Pool } from "pg";
const pool = new Pool({
connectionString: process.env.DB
});
(async () => {
const guilds = (await pool.query("SELECT * FROM guilds")).rows;
console.log("Migrating tags...");
try {
await pool.query("CREATE TABLE tags ( guild_id VARCHAR(30) NOT NULL, name text NOT NULL, content text NOT NULL, author VARCHAR(30) NOT NULL, UNIQUE(guild_id, name) )");
} catch (e) {
console.error(`Skipping table creation due to error: ${e}`);
}
for (const guild of guilds) {
for (const [name, value] of Object.entries(guild.tags)) {
if ((await pool.query("SELECT * FROM tags WHERE guild_id = $1 AND name = $2", [guild.guild_id, name])).rows.length !== 0) {
await pool.query("UPDATE tags SET content = $1, author = $2 WHERE guild_id = $3 AND name = $4", [value.content, value.author, guild.guild_id, name]);
} else {
await pool.query("INSERT INTO tags (guild_id, name, content, author) VALUES ($1, $2, $3, $4)", [guild.guild_id, name, value.content, value.author]);
}
console.log(`Migrated tag ${name} in guild ${guild.guild_id}`);
}
}
console.log("Migrating disabled commands...");
for (const guild of guilds) {
await pool.query("UPDATE guilds SET disabled_commands = $1 WHERE guild_id = $2", [guild.tags_disabled ? ["tags"] : [], guild.guild_id]);
console.log(`Migrated disabled commands in guild ${guild.guild_id}`);
}
console.log("Done!");
return process.exit(0);
})();