aXises/fortniteBot

View on GitHub
src/database/migration/GuildPropertyMigration.ts

Summary

Maintainability
A
2 hrs
Test Coverage
import * as winston from "winston";
import Logger from "log/Logger";
import DBGuildPropertySchema from "database/schemas/DBGuildPropertySchema";
import { GuildConfig } from "config/GuildBooleanConfig";

export namespace GuildPropertyMigration {
    const logger: winston.Logger = new Logger("GuildPropertyMigration").getLogger();
    const LocalPropertyModel = DBGuildPropertySchema.getModel();

    export const createModels = async (): Promise<void> => {
        const model = new LocalPropertyModel({
            targets: [],
            booleanConfig: {},
        });
        try {
            await model.save();
            logger.info("Setup guild properties document.");
        } catch (err) {
            logger.error("Failed to setup guild properties document.");
            throw err;
        }
    };

    export const verifyGuildConfig = async (): Promise<void> => {
        for (const guild of await LocalPropertyModel.find({})) {
            for (const key of GuildConfig.BooleanConfig.keys) {
                if (!(await guild.booleanConfigExists(key))) {
                    await guild.addBooleanConfig(key);
                }
            }
        }
    };
}