Merge pull request #830 from fosscord/dev/applications

Bot control panel
This commit is contained in:
Chris Chrome
2022-08-13 00:24:39 -06:00
committed by GitHub
16 changed files with 1492 additions and 80 deletions
+3 -1
View File
@@ -16,4 +16,6 @@ api/assets/plugins/*.js
*.log
*.log.ansi
bundle/depclean.*
bundle/depclean.*
*.tmp
tmp/
+39 -37
View File
@@ -1,42 +1,44 @@
<!DOCTYPE html>
<html class="theme-dark" data-theme="dark">
<head>
<meta charset="utf-8" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no" name="viewport" />
<link rel="stylesheet" href="/assets/532.03aaeef88460fae60534.css" integrity="" />
<link rel="icon" href="/assets/07dca80a102d4149e9736d4b162cff6f.ico" />
<title>Discord Test Client Developer Portal</title>
<meta charset="utf-8" data-react-helmet="true" />
</head>
<head>
<meta charset="utf-8" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no" name="viewport" />
<body>
<div id="app-mount"></div>
<script>
window.GLOBAL_ENV = {
API_VERSION: 9,
API_ENDPOINT: "/api",
WEBAPP_ENDPOINT: "",
CDN_HOST: `${location.hostname}:3003`,
<link rel="stylesheet" href="/assets/532.03aaeef88460fae60534.css" integrity="" />
<link rel="icon" href="/assets/07dca80a102d4149e9736d4b162cff6f.ico" />
<title>Discord Test Client Developer Portal</title>
<meta charset="utf-8" data-react-helmet="true" />
</head>
BRAINTREE_KEY: "production_5st77rrc_49pp2rp4phym7387",
STRIPE_KEY: "pk_live_CUQtlpQUF0vufWpnpUmQvcdi",
MARKETING_ENDPOINT: "//discord.com",
RELEASE_CHANNEL: "stable",
ALGOLIA_KEY: "aca0d7082e4e63af5ba5917d5e96bed0"
};
GLOBAL_ENV.MEDIA_PROXY_ENDPOINT = location.protocol + "//" + GLOBAL_ENV.CDN_HOST;
const localStorage = window.localStorage;
// TODO: remote auth
// window.GLOBAL_ENV.REMOTE_AUTH_ENDPOINT = window.GLOBAL_ENV.GATEWAY_ENDPOINT.replace(/wss?:/, "");
localStorage.setItem("gatewayURL", window.GLOBAL_ENV.GATEWAY_ENDPOINT);
localStorage.setItem(
"DeveloperOptionsStore",
`{"trace":false,"canary":false,"logGatewayEvents":true,"logOverlayEvents":true,"logAnalyticsEvents":true,"sourceMapsEnabled":false,"axeEnabled":false}`
);
</script>
<script src="/assets/41fde19fdf180f3d4315.js" integrity=""></script>
<script src="/assets/7b04a3ab10e05dd9054e.js" integrity=""></script>
<script src="/assets/d1f811da193e5648048b.js" integrity=""></script>
</body>
</html>
<body>
<div id="app-mount"></div>
<script>
window.GLOBAL_ENV = {
API_VERSION: 9,
API_ENDPOINT: "/api",
WEBAPP_ENDPOINT: "",
CDN_HOST: `${location.hostname}:3003`,
BRAINTREE_KEY: "production_5st77rrc_49pp2rp4phym7387",
STRIPE_KEY: "pk_live_CUQtlpQUF0vufWpnpUmQvcdi",
MARKETING_ENDPOINT: "//discord.com",
RELEASE_CHANNEL: "stable",
ALGOLIA_KEY: "aca0d7082e4e63af5ba5917d5e96bed0"
};
GLOBAL_ENV.MEDIA_PROXY_ENDPOINT = location.protocol + "//" + GLOBAL_ENV.CDN_HOST;
const localStorage = window.localStorage;
// TODO: remote auth
// window.GLOBAL_ENV.REMOTE_AUTH_ENDPOINT = window.GLOBAL_ENV.GATEWAY_ENDPOINT.replace(/wss?:/, "");
localStorage.setItem("gatewayURL", window.GLOBAL_ENV.GATEWAY_ENDPOINT);
localStorage.setItem(
"DeveloperOptionsStore",
`{"trace":false,"canary":false,"logGatewayEvents":true,"logOverlayEvents":true,"logAnalyticsEvents":true,"sourceMapsEnabled":false,"axeEnabled":false}`
);
</script>
<script src="/assets/38f40c32d3c8a2fdf73b.js" integrity=""></script>
<script src="/assets/aa190934324e05fcc35c.js" integrity=""></script>
<script src="/assets/45664a0209e828a528b4.js" integrity=""></script>
</body>
</html>
@@ -0,0 +1,83 @@
import { Request, Response, Router } from "express";
import { route } from "@fosscord/api";
import { Application, Config, FieldErrors, generateToken, OrmUtils, Snowflake, trimSpecial, User, handleFile } from "@fosscord/util";
import { HTTPError } from "lambert-server";
import { verifyToken } from "node-2fa";
const router: Router = Router();
router.post("/", route({}), async (req: Request, res: Response) => {
const app = await Application.findOne({where: {id: req.params.id}});
if(!app) return res.status(404);
const username = trimSpecial(app.name);
const discriminator = await User.generateDiscriminator(username);
if (!discriminator) {
// We've failed to generate a valid and unused discriminator
throw FieldErrors({
username: {
code: "USERNAME_TOO_MANY_USERS",
message: req?.t("auth:register.USERNAME_TOO_MANY_USERS"),
},
});
}
const user = OrmUtils.mergeDeep(new User(), {
created_at: new Date(),
username: username,
discriminator,
id: app.id,
bot: true,
system: false,
premium_since: 0,
desktop: false,
mobile: false,
premium: false,
premium_type: 0,
bio: app.description,
mfa_enabled: true,
totp_secret: "",
totp_backup_codes: [],
verified: true,
disabled: false,
deleted: false,
email: null,
rights: Config.get().register.defaultRights,
nsfw_allowed: true,
public_flags: "0",
flags: "0",
data: {
hash: null,
valid_tokens_since: new Date(),
},
settings: {},
extended_settings: {},
fingerprints: [],
notes: {},
});
await user.save();
app.bot = user;
await app.save();
res.send().status(204)
});
router.post("/reset", route({}), async (req: Request, res: Response) => {
let bot = await User.findOne({where: {id: req.params.id}});
let owner = await User.findOne({where: {id: req.user_id}});
if(!bot) return res.status(404);
if(owner?.totp_secret && (!req.body.code || verifyToken(owner.totp_secret, req.body.code))) {
throw new HTTPError(req.t("auth:login.INVALID_TOTP_CODE"), 60008);
}
bot.data = { hash: undefined, valid_tokens_since: new Date() };
await bot.save();
let token = await generateToken(bot.id);
res.json({token}).status(200);
});
router.patch("/", route({}), async (req: Request, res: Response) => {
if (req.body.avatar) req.body.avatar = await handleFile(`/avatars/${req.params.id}`, req.body.avatar as string);
let app = OrmUtils.mergeDeep(await User.findOne({where: {id: req.params.id}}), req.body);
await app.save();
res.json(app).status(200);
});
export default router;
+30
View File
@@ -0,0 +1,30 @@
import { Request, Response, Router } from "express";
import { route } from "@fosscord/api";
import { Application, OrmUtils, Team, trimSpecial, User } from "@fosscord/util";
const router: Router = Router();
router.get("/", route({}), async (req: Request, res: Response) => {
let results = await Application.findOne({where: {id: req.params.id}, relations: ["owner", "bot"] });
res.json(results).status(200);
});
router.patch("/", route({}), async (req: Request, res: Response) => {
delete req.body.icon;
let app = OrmUtils.mergeDeep(await Application.findOne({where: {id: req.params.id}, relations: ["owner", "bot"]}), req.body);
if(app.bot) {
app.bot.bio = req.body.description
app.bot?.save();
}
if(req.body.tags) app.tags = req.body.tags;
await app.save();
res.json(app).status(200);
});
router.post("/delete", route({}), async (req: Request, res: Response) => {
await Application.delete(req.params.id);
res.send().status(200);
});
export default router;
+11
View File
@@ -0,0 +1,11 @@
import { Request, Response, Router } from "express";
import { route } from "@fosscord/api";
import { Application, OrmUtils, Team, trimSpecial, User } from "@fosscord/util";
const router: Router = Router();
router.get("/", route({}), async (req: Request, res: Response) => {
res.json([]).status(200);
});
export default router;
+25 -2
View File
@@ -1,11 +1,34 @@
import { Request, Response, Router } from "express";
import { route } from "@fosscord/api";
import { Application, OrmUtils, Team, trimSpecial, User } from "@fosscord/util";
const router: Router = Router();
export interface ApplicationCreateSchema {
name: string;
team_id?: string | number;
}
router.get("/", route({}), async (req: Request, res: Response) => {
//TODO
res.send([]).status(200);
let results = await Application.find({where: {owner: {id: req.user_id}}, relations: ["owner", "bot"] });
res.json(results).status(200);
});
export default router;
router.post("/", route({}), async (req: Request, res: Response) => {
const body = req.body as ApplicationCreateSchema;
const user = await User.findOne({where: {id: req.user_id}})
if(!user) res.status(420);
let app = OrmUtils.mergeDeep(new Application(), {
name: trimSpecial(body.name),
description: "",
bot_public: true,
owner: user,
verify_key: "IMPLEMENTME",
flags: 0
});
await app.save();
res.json(app).status(200);
});
export default router;
+1 -1
View File
@@ -99,4 +99,4 @@
"typescript": "^4.1.2",
"ws": "^8.8.1"
}
}
}
+1 -1
View File
@@ -232,7 +232,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
const d: ReadyEventData = {
v: 8,
application: {id: application?.id??'', flags: application?.flags??''}, //TODO: check this code!
application: {id: application?.id??'', flags: application?.flags??0}, //TODO: check this code!
user: privateUser,
user_settings: user.settings,
// @ts-ignore
+82 -35
View File
@@ -1,4 +1,4 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { Column, Entity, JoinColumn, ManyToOne, OneToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
import { Guild } from "./Guild";
import { Team } from "./Team";
@@ -8,21 +8,77 @@ import { User } from "./User";
export class Application extends BaseClass {
@Column()
name: string;
@Column({ nullable: true })
icon?: string;
@Column()
@Column({ nullable: true })
description: string;
@Column({ nullable: true })
summary: string = "";
@Column({ type: "simple-json", nullable: true })
type?: any;
@Column()
hook: boolean = true;
@Column()
bot_public?: boolean = true;
@Column()
bot_require_code_grant?: boolean = false;
@Column()
verify_key: string;
@JoinColumn({ name: "owner_id" })
@ManyToOne(() => User)
owner: User;
@Column()
flags: number = 0;
@Column({ type: "simple-array", nullable: true })
rpc_origins?: string[];
@Column()
bot_public: boolean;
@Column()
bot_require_code_grant: boolean;
redirect_uris: string[] = [];
@Column({ nullable: true })
rpc_application_state: number = 0;
@Column({ nullable: true })
store_application_state: number = 1;
@Column({ nullable: true })
verification_state: number = 1;
@Column({ nullable: true })
interactions_endpoint_url?: string;
@Column({ nullable: true })
integration_public: boolean = true;
@Column({ nullable: true })
integration_require_code_grant: boolean = false;
@Column({ nullable: true })
discoverability_state: number = 1;
@Column({ nullable: true })
discovery_eligibility_flags: number = 2240;
@JoinColumn({ name: "bot_user_id" })
@OneToOne(() => User)
bot?: User;
@Column({ type: "simple-array", nullable: true })
tags?: string[];
@Column({ nullable: true })
cover_image?: string; // the application's default rich presence invite cover image hash
@Column({ type: "simple-json", nullable: true })
install_params?: {scopes: string[], permissions: string};
@Column({ nullable: true })
terms_of_service_url?: string;
@@ -30,38 +86,29 @@ export class Application extends BaseClass {
@Column({ nullable: true })
privacy_policy_url?: string;
@JoinColumn({ name: "owner_id" })
@ManyToOne(() => User)
owner?: User;
//just for us
@Column({ nullable: true })
summary?: string;
//@Column({ type: "simple-array", nullable: true })
//rpc_origins?: string[];
//@JoinColumn({ name: "guild_id" })
//@ManyToOne(() => Guild)
//guild?: Guild; // if this application is a game sold, this field will be the guild to which it has been linked
@Column()
verify_key: string;
//@Column({ nullable: true })
//primary_sku_id?: string; // if this application is a game sold, this field will be the id of the "Game SKU" that is created,
//@Column({ nullable: true })
//slug?: string; // if this application is a game sold, this field will be the URL slug that links to the store page
@JoinColumn({ name: "team_id" })
@ManyToOne(() => Team, {
onDelete: "CASCADE",
nullable: true
})
team?: Team;
@JoinColumn({ name: "guild_id" })
@ManyToOne(() => Guild)
guild: Guild; // if this application is a game sold, this field will be the guild to which it has been linked
@Column({ nullable: true })
primary_sku_id?: string; // if this application is a game sold, this field will be the id of the "Game SKU" that is created,
@Column({ nullable: true })
slug?: string; // if this application is a game sold, this field will be the URL slug that links to the store page
@Column({ nullable: true })
cover_image?: string; // the application's default rich presence invite cover image hash
@Column()
flags: string; // the application's public flags
}
}
export interface ApplicationCommand {
id: string;
+1 -1
View File
@@ -257,7 +257,7 @@ export class Member extends BaseClassWithoutId {
nick: undefined,
roles: [guild_id], // @everyone role
joined_at: new Date(),
premium_since: new Date(),
premium_since: null,
deaf: false,
mute: false,
pending: false,
+1 -1
View File
@@ -194,7 +194,7 @@ export class User extends BaseClass {
});
}
private static async generateDiscriminator(username: string): Promise<string | undefined> {
public static async generateDiscriminator(username: string): Promise<string | undefined> {
if (Config.get().register.incrementingDiscriminators) {
// discriminator will be incrementally generated
+1 -1
View File
@@ -93,7 +93,7 @@ export interface ReadyEventData {
};
application?: {
id: string;
flags: string;
flags: number;
};
merged_members?: PublicMember[][];
// probably all users who the user is in contact with
@@ -0,0 +1,185 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class updatedApplications1660130586602 implements MigrationInterface {
name = 'updatedApplications1660130586602'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE \`applications\` DROP FOREIGN KEY \`FK_e5bf78cdbbe9ba91062d74c5aba\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`rpc_origins\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`primary_sku_id\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`slug\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`guild_id\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`type\` text NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`hook\` tinyint NOT NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`redirect_uris\` text NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`rpc_application_state\` int NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`store_application_state\` int NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`verification_state\` int NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`interactions_endpoint_url\` varchar(255) NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`integration_public\` tinyint NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`integration_require_code_grant\` tinyint NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`discoverability_state\` int NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`discovery_eligibility_flags\` int NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`tags\` text NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`install_params\` text NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`bot_user_id\` varchar(255) NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD UNIQUE INDEX \`IDX_2ce5a55796fe4c2f77ece57a64\` (\`bot_user_id\`)
`);
await queryRunner.query(`
ALTER TABLE \`applications\` CHANGE \`description\` \`description\` varchar(255) NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`flags\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`flags\` int NOT NULL
`);
await queryRunner.query(`
CREATE UNIQUE INDEX \`REL_2ce5a55796fe4c2f77ece57a64\` ON \`applications\` (\`bot_user_id\`)
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD CONSTRAINT \`FK_2ce5a55796fe4c2f77ece57a647\` FOREIGN KEY (\`bot_user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE \`applications\` DROP FOREIGN KEY \`FK_2ce5a55796fe4c2f77ece57a647\`
`);
await queryRunner.query(`
DROP INDEX \`REL_2ce5a55796fe4c2f77ece57a64\` ON \`applications\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`flags\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`flags\` varchar(255) NOT NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\` CHANGE \`description\` \`description\` varchar(255) NOT NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP INDEX \`IDX_2ce5a55796fe4c2f77ece57a64\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`bot_user_id\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`install_params\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`tags\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`discovery_eligibility_flags\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`discoverability_state\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`integration_require_code_grant\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`integration_public\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`interactions_endpoint_url\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`verification_state\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`store_application_state\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`rpc_application_state\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`redirect_uris\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`hook\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\` DROP COLUMN \`type\`
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`guild_id\` varchar(255) NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`slug\` varchar(255) NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`primary_sku_id\` varchar(255) NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD \`rpc_origins\` text NULL
`);
await queryRunner.query(`
ALTER TABLE \`applications\`
ADD CONSTRAINT \`FK_e5bf78cdbbe9ba91062d74c5aba\` FOREIGN KEY (\`guild_id\`) REFERENCES \`guilds\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION
`);
}
}
@@ -0,0 +1,18 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class appsNullableTeam1660131942703 implements MigrationInterface {
name = 'appsNullableTeam1660131942703'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
DROP INDEX \`IDX_2ce5a55796fe4c2f77ece57a64\` ON \`applications\`
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
CREATE UNIQUE INDEX \`IDX_2ce5a55796fe4c2f77ece57a64\` ON \`applications\` (\`bot_user_id\`)
`);
}
}
@@ -0,0 +1,182 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class updatedApplications1660130561959 implements MigrationInterface {
name = 'updatedApplications1660130561959'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE "applications" DROP CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "rpc_origins"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "primary_sku_id"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "slug"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "guild_id"
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "type" text
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "hook" boolean NOT NULL
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "redirect_uris" text
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "rpc_application_state" integer
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "store_application_state" integer
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "verification_state" integer
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "interactions_endpoint_url" character varying
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "integration_public" boolean
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "integration_require_code_grant" boolean
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "discoverability_state" integer
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "discovery_eligibility_flags" integer
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "tags" text
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "install_params" text
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "bot_user_id" character varying
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD CONSTRAINT "UQ_2ce5a55796fe4c2f77ece57a647" UNIQUE ("bot_user_id")
`);
await queryRunner.query(`
ALTER TABLE "applications"
ALTER COLUMN "description" DROP NOT NULL
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "flags"
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "flags" integer NOT NULL
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD CONSTRAINT "FK_2ce5a55796fe4c2f77ece57a647" FOREIGN KEY ("bot_user_id") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE "applications" DROP CONSTRAINT "FK_2ce5a55796fe4c2f77ece57a647"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "flags"
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "flags" character varying NOT NULL
`);
await queryRunner.query(`
ALTER TABLE "applications"
ALTER COLUMN "description"
SET NOT NULL
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP CONSTRAINT "UQ_2ce5a55796fe4c2f77ece57a647"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "bot_user_id"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "install_params"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "tags"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "discovery_eligibility_flags"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "discoverability_state"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "integration_require_code_grant"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "integration_public"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "interactions_endpoint_url"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "verification_state"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "store_application_state"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "rpc_application_state"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "redirect_uris"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "hook"
`);
await queryRunner.query(`
ALTER TABLE "applications" DROP COLUMN "type"
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "guild_id" character varying
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "slug" character varying
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "primary_sku_id" character varying
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD "rpc_origins" text
`);
await queryRunner.query(`
ALTER TABLE "applications"
ADD CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba" FOREIGN KEY ("guild_id") REFERENCES "guilds"("id") ON DELETE NO ACTION ON UPDATE NO ACTION
`);
}
}
@@ -0,0 +1,829 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class updatedApplications1660130536131 implements MigrationInterface {
name = 'updatedApplications1660130536131'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
CREATE TABLE "temporary_applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar NOT NULL,
"rpc_origins" text,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"primary_sku_id" varchar,
"slug" varchar,
"cover_image" varchar,
"flags" varchar NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"guild_id" varchar,
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "temporary_applications"(
"id",
"name",
"icon",
"description",
"rpc_origins",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"primary_sku_id",
"slug",
"cover_image",
"flags",
"owner_id",
"team_id",
"guild_id"
)
SELECT "id",
"name",
"icon",
"description",
"rpc_origins",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"primary_sku_id",
"slug",
"cover_image",
"flags",
"owner_id",
"team_id",
"guild_id"
FROM "applications"
`);
await queryRunner.query(`
DROP TABLE "applications"
`);
await queryRunner.query(`
ALTER TABLE "temporary_applications"
RENAME TO "applications"
`);
await queryRunner.query(`
CREATE TABLE "temporary_applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar NOT NULL,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"cover_image" varchar,
"flags" varchar NOT NULL,
"owner_id" varchar,
"team_id" varchar,
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "temporary_applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
FROM "applications"
`);
await queryRunner.query(`
DROP TABLE "applications"
`);
await queryRunner.query(`
ALTER TABLE "temporary_applications"
RENAME TO "applications"
`);
await queryRunner.query(`
CREATE TABLE "temporary_applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar NOT NULL,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"cover_image" varchar,
"flags" varchar NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"type" text,
"hook" boolean NOT NULL,
"redirect_uris" text,
"rpc_application_state" integer,
"store_application_state" integer,
"verification_state" integer,
"interactions_endpoint_url" varchar,
"integration_public" boolean,
"integration_require_code_grant" boolean,
"discoverability_state" integer,
"discovery_eligibility_flags" integer,
"tags" text,
"install_params" text,
"bot_user_id" varchar,
CONSTRAINT "UQ_b7f6e13565e920916d902e1f431" UNIQUE ("bot_user_id"),
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "temporary_applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
FROM "applications"
`);
await queryRunner.query(`
DROP TABLE "applications"
`);
await queryRunner.query(`
ALTER TABLE "temporary_applications"
RENAME TO "applications"
`);
await queryRunner.query(`
CREATE TABLE "temporary_applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"cover_image" varchar,
"flags" integer NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"type" text,
"hook" boolean NOT NULL,
"redirect_uris" text,
"rpc_application_state" integer,
"store_application_state" integer,
"verification_state" integer,
"interactions_endpoint_url" varchar,
"integration_public" boolean,
"integration_require_code_grant" boolean,
"discoverability_state" integer,
"discovery_eligibility_flags" integer,
"tags" text,
"install_params" text,
"bot_user_id" varchar,
CONSTRAINT "UQ_b7f6e13565e920916d902e1f431" UNIQUE ("bot_user_id"),
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "temporary_applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
FROM "applications"
`);
await queryRunner.query(`
DROP TABLE "applications"
`);
await queryRunner.query(`
ALTER TABLE "temporary_applications"
RENAME TO "applications"
`);
await queryRunner.query(`
CREATE TABLE "temporary_applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"cover_image" varchar,
"flags" integer NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"type" text,
"hook" boolean NOT NULL,
"redirect_uris" text,
"rpc_application_state" integer,
"store_application_state" integer,
"verification_state" integer,
"interactions_endpoint_url" varchar,
"integration_public" boolean,
"integration_require_code_grant" boolean,
"discoverability_state" integer,
"discovery_eligibility_flags" integer,
"tags" text,
"install_params" text,
"bot_user_id" varchar,
CONSTRAINT "UQ_b7f6e13565e920916d902e1f431" UNIQUE ("bot_user_id"),
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT "FK_2ce5a55796fe4c2f77ece57a647" FOREIGN KEY ("bot_user_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "temporary_applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
FROM "applications"
`);
await queryRunner.query(`
DROP TABLE "applications"
`);
await queryRunner.query(`
ALTER TABLE "temporary_applications"
RENAME TO "applications"
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE "applications"
RENAME TO "temporary_applications"
`);
await queryRunner.query(`
CREATE TABLE "applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"cover_image" varchar,
"flags" integer NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"type" text,
"hook" boolean NOT NULL,
"redirect_uris" text,
"rpc_application_state" integer,
"store_application_state" integer,
"verification_state" integer,
"interactions_endpoint_url" varchar,
"integration_public" boolean,
"integration_require_code_grant" boolean,
"discoverability_state" integer,
"discovery_eligibility_flags" integer,
"tags" text,
"install_params" text,
"bot_user_id" varchar,
CONSTRAINT "UQ_b7f6e13565e920916d902e1f431" UNIQUE ("bot_user_id"),
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
FROM "temporary_applications"
`);
await queryRunner.query(`
DROP TABLE "temporary_applications"
`);
await queryRunner.query(`
ALTER TABLE "applications"
RENAME TO "temporary_applications"
`);
await queryRunner.query(`
CREATE TABLE "applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar NOT NULL,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"cover_image" varchar,
"flags" varchar NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"type" text,
"hook" boolean NOT NULL,
"redirect_uris" text,
"rpc_application_state" integer,
"store_application_state" integer,
"verification_state" integer,
"interactions_endpoint_url" varchar,
"integration_public" boolean,
"integration_require_code_grant" boolean,
"discoverability_state" integer,
"discovery_eligibility_flags" integer,
"tags" text,
"install_params" text,
"bot_user_id" varchar,
CONSTRAINT "UQ_b7f6e13565e920916d902e1f431" UNIQUE ("bot_user_id"),
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id",
"type",
"hook",
"redirect_uris",
"rpc_application_state",
"store_application_state",
"verification_state",
"interactions_endpoint_url",
"integration_public",
"integration_require_code_grant",
"discoverability_state",
"discovery_eligibility_flags",
"tags",
"install_params",
"bot_user_id"
FROM "temporary_applications"
`);
await queryRunner.query(`
DROP TABLE "temporary_applications"
`);
await queryRunner.query(`
ALTER TABLE "applications"
RENAME TO "temporary_applications"
`);
await queryRunner.query(`
CREATE TABLE "applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar NOT NULL,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"cover_image" varchar,
"flags" varchar NOT NULL,
"owner_id" varchar,
"team_id" varchar,
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
FROM "temporary_applications"
`);
await queryRunner.query(`
DROP TABLE "temporary_applications"
`);
await queryRunner.query(`
ALTER TABLE "applications"
RENAME TO "temporary_applications"
`);
await queryRunner.query(`
CREATE TABLE "applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar NOT NULL,
"rpc_origins" text,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"primary_sku_id" varchar,
"slug" varchar,
"cover_image" varchar,
"flags" varchar NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"guild_id" varchar,
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "applications"(
"id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
)
SELECT "id",
"name",
"icon",
"description",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"cover_image",
"flags",
"owner_id",
"team_id"
FROM "temporary_applications"
`);
await queryRunner.query(`
DROP TABLE "temporary_applications"
`);
await queryRunner.query(`
ALTER TABLE "applications"
RENAME TO "temporary_applications"
`);
await queryRunner.query(`
CREATE TABLE "applications" (
"id" varchar PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"icon" varchar,
"description" varchar NOT NULL,
"rpc_origins" text,
"bot_public" boolean NOT NULL,
"bot_require_code_grant" boolean NOT NULL,
"terms_of_service_url" varchar,
"privacy_policy_url" varchar,
"summary" varchar,
"verify_key" varchar NOT NULL,
"primary_sku_id" varchar,
"slug" varchar,
"cover_image" varchar,
"flags" varchar NOT NULL,
"owner_id" varchar,
"team_id" varchar,
"guild_id" varchar,
CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY ("team_id") REFERENCES "teams" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY ("owner_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
)
`);
await queryRunner.query(`
INSERT INTO "applications"(
"id",
"name",
"icon",
"description",
"rpc_origins",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"primary_sku_id",
"slug",
"cover_image",
"flags",
"owner_id",
"team_id",
"guild_id"
)
SELECT "id",
"name",
"icon",
"description",
"rpc_origins",
"bot_public",
"bot_require_code_grant",
"terms_of_service_url",
"privacy_policy_url",
"summary",
"verify_key",
"primary_sku_id",
"slug",
"cover_image",
"flags",
"owner_id",
"team_id",
"guild_id"
FROM "temporary_applications"
`);
await queryRunner.query(`
DROP TABLE "temporary_applications"
`);
}
}