Move tags to separate table, part 2
This commit is contained in:
		
							parent
							
								
									a75ceb41f2
								
							
						
					
					
						commit
						e8094c78ec
					
				
					 1 changed files with 27 additions and 16 deletions
				
			
		| 
						 | 
					@ -1,5 +1,4 @@
 | 
				
			||||||
const collections = require("../collections.js");
 | 
					const collections = require("../collections.js");
 | 
				
			||||||
const misc = require("../misc.js");
 | 
					 | 
				
			||||||
const logger = require("../logger.js");
 | 
					const logger = require("../logger.js");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const sqlite3 = require("better-sqlite3");
 | 
					const sqlite3 = require("better-sqlite3");
 | 
				
			||||||
| 
						 | 
					@ -14,6 +13,12 @@ exports.setup = async () => {
 | 
				
			||||||
    counts = [];
 | 
					    counts = [];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    connection.prepare("SELECT * FROM tags").all();
 | 
				
			||||||
 | 
					  } catch {
 | 
				
			||||||
 | 
					    connection.prepare("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) )").run();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!counts) {
 | 
					  if (!counts) {
 | 
				
			||||||
    for (const command of collections.commands.keys()) {
 | 
					    for (const command of collections.commands.keys()) {
 | 
				
			||||||
      connection.prepare("INSERT INTO counts (command, count) VALUES (?, ?)").run(command, 0);
 | 
					      connection.prepare("INSERT INTO counts (command, count) VALUES (?, ?)").run(command, 0);
 | 
				
			||||||
| 
						 | 
					@ -45,7 +50,7 @@ exports.fixGuild = async (guild) => {
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    guildDB = connection.prepare("SELECT * FROM guilds WHERE guild_id = ?").get(guild.id);
 | 
					    guildDB = connection.prepare("SELECT * FROM guilds WHERE guild_id = ?").get(guild.id);
 | 
				
			||||||
  } catch {
 | 
					  } catch {
 | 
				
			||||||
    connection.prepare("CREATE TABLE guilds ( guild_id VARCHAR(30) NOT NULL, tags text NOT NULL, prefix VARCHAR(15) NOT NULL, disabled text NOT NULL, tags_disabled integer NOT NULL DEFAULT 0 CHECK(tags_disabled IN (0,1)) )").run();
 | 
					    connection.prepare("CREATE TABLE guilds ( guild_id VARCHAR(30) NOT NULL, prefix VARCHAR(15) NOT NULL, disabled text NOT NULL, tags_disabled integer NOT NULL DEFAULT 0 CHECK(tags_disabled IN (0,1)) )").run();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (!guildDB) {
 | 
					  if (!guildDB) {
 | 
				
			||||||
    logger.log(`Registering guild database entry for guild ${guild.id}...`);
 | 
					    logger.log(`Registering guild database entry for guild ${guild.id}...`);
 | 
				
			||||||
| 
						 | 
					@ -85,26 +90,33 @@ exports.toggleTags = async (guild) => {
 | 
				
			||||||
  connection.prepare("UPDATE guilds SET tags_disabled = ? WHERE guild_id = ?").run(guildDB.tags_disabled, guild.id);
 | 
					  connection.prepare("UPDATE guilds SET tags_disabled = ? WHERE guild_id = ?").run(guildDB.tags_disabled, guild.id);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.getTags = async (name, content, guild) => {
 | 
					exports.getTags = async (guild) => {
 | 
				
			||||||
  const guildDB = await this.getGuild(guild.id);
 | 
					  const tagArray = connection.prepare("SELECT * FROM tags WHERE guild_id = ?").all(guild);
 | 
				
			||||||
  return JSON.parse(guildDB.tags);
 | 
					  const tags = {};
 | 
				
			||||||
 | 
					  if (!tagArray) return [];
 | 
				
			||||||
 | 
					  for (const tag of tagArray) {
 | 
				
			||||||
 | 
					    tags[tag.name] = { content: tag.content, author: tag.author };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return tags;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.setTag = async (name, content, guild) => {
 | 
					exports.setTag = async (name, content, guild) => {
 | 
				
			||||||
  const guildDB = await this.getGuild(guild.id);
 | 
					  const tag = {
 | 
				
			||||||
  const tags = JSON.parse(guildDB.tags);
 | 
					    id: guild.id,
 | 
				
			||||||
  tags[name] = content;
 | 
					    name: name,
 | 
				
			||||||
  connection.prepare("UPDATE guilds SET tags = ? WHERE guild_id = ?").run(JSON.stringify(tags), guild.id);
 | 
					    content: content.content,
 | 
				
			||||||
 | 
					    author: content.author
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  connection.prepare("INSERT INTO tags (guild_id, name, content, author) VALUES (@id, @name, @content, @author)").run(tag);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.removeTag = async (name, guild) => {
 | 
					exports.removeTag = async (name, guild) => {
 | 
				
			||||||
  const guildDB = await this.getGuild(guild.id);
 | 
					  connection.prepare("DELETE FROM tags WHERE guild_id = ? AND name = ?").run(guild.id, name);
 | 
				
			||||||
  const tags = JSON.parse(guildDB.tags);
 | 
					 | 
				
			||||||
  delete tags[name];
 | 
					 | 
				
			||||||
  connection.prepare("UPDATE guilds SET tags = ? WHERE guild_id = ?").run(JSON.stringify(tags), guild.id);
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.editTag = this.setTag;
 | 
					exports.editTag = async (name, content, guild) => {
 | 
				
			||||||
 | 
					  connection.prepare("UPDATE tags SET content = ?, author = ? WHERE guild_id = ? AND name = ?").run(content.content, content.author, guild.id, name);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.setPrefix = async (prefix, guild) => {
 | 
					exports.setPrefix = async (prefix, guild) => {
 | 
				
			||||||
  connection.prepare("UPDATE guilds SET prefix = ? WHERE guild_id = ?").run(prefix, guild.id);
 | 
					  connection.prepare("UPDATE guilds SET prefix = ? WHERE guild_id = ?").run(prefix, guild.id);
 | 
				
			||||||
| 
						 | 
					@ -116,12 +128,11 @@ exports.addGuild = async (guild) => {
 | 
				
			||||||
  if (query) return query;
 | 
					  if (query) return query;
 | 
				
			||||||
  const guildObject = {
 | 
					  const guildObject = {
 | 
				
			||||||
    id: guild.id,
 | 
					    id: guild.id,
 | 
				
			||||||
    tags: JSON.stringify(misc.tagDefaults),
 | 
					 | 
				
			||||||
    prefix: process.env.PREFIX,
 | 
					    prefix: process.env.PREFIX,
 | 
				
			||||||
    disabled: "[]",
 | 
					    disabled: "[]",
 | 
				
			||||||
    tagsDisabled: 0
 | 
					    tagsDisabled: 0
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  connection.prepare("INSERT INTO guilds (guild_id, tags, prefix, disabled, tags_disabled) VALUES (@id, @tags, @prefix, @disabled, @tagsDisabled)").run(guildObject);
 | 
					  connection.prepare("INSERT INTO guilds (guild_id, prefix, disabled, tags_disabled) VALUES (@id, @prefix, @disabled, @tagsDisabled)").run(guildObject);
 | 
				
			||||||
  return guildObject;
 | 
					  return guildObject;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue