Local changes

This commit is contained in:
Rory& 2025-10-16 18:41:52 +02:00
parent 5c798af16d
commit aff39e4b1b
8 changed files with 121 additions and 82 deletions

12
.idea/dataSources.xml generated Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="spacebar@localhost" uuid="61e66448-285a-4205-a1d7-c2704d5afb2c">
<driver-ref>postgresql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
<jdbc-url>jdbc:postgresql://localhost:5432/spacebar</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

6
.idea/data_source_mapping.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourcePerFileMappings">
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/61e66448-285a-4205-a1d7-c2704d5afb2c/console.sql" value="61e66448-285a-4205-a1d7-c2704d5afb2c" />
</component>
</project>

6
.idea/sqldialects.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="PROJECT" dialect="PostgreSQL" />
</component>
</project>

15
.idea/workspace.xml generated
View File

@ -73,6 +73,9 @@
"ts.external.directory.path": "/home/Rory/git/spacebar/server-master/node_modules/typescript/lib"
},
"keyToStringList": {
"DatabaseDriversLRU": [
"postgresql"
],
"GitStage.ChangesTree.GroupingKeys": [
"directory",
"module",
@ -102,6 +105,18 @@
<option value="js.build_tools.npm" />
</set>
</option>
<option name="configurationStatuses">
<map>
<entry key="js.build_tools.npm">
<value>
<map>
<entry key="Start API" value="STOPPED" />
<entry key="build" value="STOPPED" />
</map>
</value>
</entry>
</map>
</option>
</component>
<component name="RunManager" selected="npm.Start API">
<list>

View File

@ -18,8 +18,13 @@
import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
import { ApplicationDetectableResponse } from "@spacebar/schemas*";
const router: Router = Router({ mergeParams: true });
const cache = {
data: {},
lastUpdated: 0
}
router.get(
"/",
@ -31,8 +36,15 @@ router.get(
},
}),
async (req: Request, res: Response) => {
//TODO
res.send([]).status(200);
// cache for 6 hours
if (Date.now() - cache.lastUpdated > 6 * 60 * 60 * 1000) {
const response = await fetch("https://discord.com/api/v10/applications/detectable"); // because, well, it's unauthenticated anyways
const data = await response.json();
cache.data = data as ApplicationDetectableResponse;
cache.lastUpdated = Date.now();
}
res.status(200).json(cache.data);
},
);

View File

@ -28,6 +28,7 @@ import { Message } from "./Message";
import { Deflate, Inflate } from "fast-zlib";
import { URL } from "url";
import { Config, ErlpackType } from "@spacebar/util";
// import zlib from "node:zlib";
let erlpack: ErlpackType | null = null;
try {
@ -116,10 +117,18 @@ export async function Connection(
// @ts-ignore
socket.compress = searchParams.get("compress") || "";
if (socket.compress) {
if (socket.compress !== "zlib-stream")
if (socket.compress === "zlib-stream") {
socket.deflate = new Deflate();
socket.inflate = new Inflate();
} else if (socket.compress === "zstd-stream") {
// TODO
return socket.close(
CLOSECODES.Decode_error
);
} else {
return socket.close(CLOSECODES.Decode_error);
socket.deflate = new Deflate();
socket.inflate = new Inflate();
}
}
socket.events = {};

View File

@ -113,13 +113,13 @@ export class User extends BaseClass {
@Column({ nullable: true, select: false })
email?: string; // email of the user
@Column()
@Column({ type: "bigint" })
flags: number = 0; // UserFlags // TODO: generate
@Column()
@Column({ type: "bigint" })
public_flags: number = 0;
@Column()
@Column({ type: "bigint" })
purchased_flags: number = 0;
@Column()

View File

@ -1,74 +1,53 @@
// import { MigrationInterface, QueryRunner } from "typeorm";
//
// export class ApplicationCommands1760622755598 implements MigrationInterface {
// name = 'ApplicationCommands1760622755598'
//
// public async up(queryRunner: QueryRunner): Promise<void> {
// await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6"`);
// await queryRunner.query(`ALTER TABLE "webhooks" DROP COLUMN "source_channel_id"`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD "source_channel_id" character varying`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "username"`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "username" character varying`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "avatar"`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "avatar" character varying`);
// await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" DROP NOT NULL`);
// await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" DROP DEFAULT`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" DROP DEFAULT`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "flags" integer NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "public_flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "public_flags" integer NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "purchased_flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "purchased_flags" integer NOT NULL`);
// await queryRunner.query(`ALTER TABLE "team_members" DROP COLUMN "role"`);
// await queryRunner.query(`ALTER TABLE "team_members" ADD "role" character varying NOT NULL`);
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "guild_id"`);
// await queryRunner.query(`ALTER TABLE "applications" ADD "guild_id" character varying`);
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "custom_install_url"`);
// await queryRunner.query(`ALTER TABLE "applications" ADD "custom_install_url" character varying`);
// await queryRunner.query(`ALTER TABLE "categories" DROP COLUMN "icon"`);
// await queryRunner.query(`ALTER TABLE "categories" ADD "icon" character varying`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "userSettings"`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "userSettings" character varying`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "frecencySettings"`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "frecencySettings" character varying`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "FK_4495b7032a33c6b8b605d030398" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
// 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`);
// }
//
// public async down(queryRunner: QueryRunner): Promise<void> {
// await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba"`);
// await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "FK_4495b7032a33c6b8b605d030398"`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "frecencySettings"`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "frecencySettings" text`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "userSettings"`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "userSettings" text`);
// await queryRunner.query(`ALTER TABLE "categories" DROP COLUMN "icon"`);
// await queryRunner.query(`ALTER TABLE "categories" ADD "icon" text`);
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "custom_install_url"`);
// await queryRunner.query(`ALTER TABLE "applications" ADD "custom_install_url" text`);
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "guild_id"`);
// await queryRunner.query(`ALTER TABLE "applications" ADD "guild_id" text`);
// await queryRunner.query(`ALTER TABLE "team_members" DROP COLUMN "role"`);
// await queryRunner.query(`ALTER TABLE "team_members" ADD "role" text NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "purchased_flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "purchased_flags" bigint NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "public_flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "public_flags" bigint NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "flags" bigint NOT NULL`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" SET DEFAULT true`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" SET DEFAULT '0'`);
// await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" DROP NOT NULL`);
// await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "avatar"`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "avatar" text`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "username"`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "username" text`);
// await queryRunner.query(`ALTER TABLE "webhooks" DROP COLUMN "source_channel_id"`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD "source_channel_id" character varying(255) DEFAULT NULL`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
// }
//
// }
import { MigrationInterface, QueryRunner } from "typeorm";
export class ReconcileMigrationAttempts1760622755598 implements MigrationInterface {
name = 'ReconcileMigrationAttempts1760622755598'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6"`);
await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "username" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "avatar" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" DROP NOT NULL`);
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" DROP DEFAULT`);
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" DROP DEFAULT`);
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "flags" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "public_flags" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "purchased_flags" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "guild_id" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "custom_install_url" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "categories" ALTER COLUMN "icon" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "userSettings" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "frecencySettings" TYPE character varying`);
await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "FK_4495b7032a33c6b8b605d030398" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
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`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba"`);
await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "FK_4495b7032a33c6b8b605d030398"`);
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "frecencySettings" TYPE text`);
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "userSettings" TYPE text`);
await queryRunner.query(`ALTER TABLE "categories" ALTER COLUMN "icon" TYPE text`);
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "custom_install_url" TYPE text`);
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "guild_id" TYPE text`);
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" TYPE text`);
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "purchased_flags" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "public_flags" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "flags" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" SET DEFAULT true`);
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" SET DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" DROP NOT NULL`);
await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" SET NOT NULL`);
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "avatar" TYPE text`);
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "username" TYPE text`);
await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" TYPE character varying(255)`);
await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" SET DEFAULT NULL`);
await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
}
}