From cba341a6d6e739ba1be4362ce03472de57c7d35f Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Wed, 1 Sep 2021 23:34:55 +0200 Subject: [PATCH] :bug: fix entity types and projection --- .../#channel_id/messages/#message_id/index.ts | 3 +- api/src/routes/users/@me/index.ts | 25 +------ bundle/database.db | Bin 225280 -> 0 bytes util/package-lock.json | 14 ++-- util/package.json | 2 +- util/src/entities/AuditLog.ts | 6 +- util/src/entities/BaseClass.ts | 10 +-- util/src/entities/Member.ts | 7 +- util/src/entities/Message.ts | 2 +- util/src/entities/User.ts | 64 ++++++++++++------ util/src/tes.ts | 23 ------- 11 files changed, 67 insertions(+), 89 deletions(-) delete mode 100644 bundle/database.db delete mode 100644 util/src/tes.ts diff --git a/api/src/routes/channels/#channel_id/messages/#message_id/index.ts b/api/src/routes/channels/#channel_id/messages/#message_id/index.ts index b9d46c4f..9c631a18 100644 --- a/api/src/routes/channels/#channel_id/messages/#message_id/index.ts +++ b/api/src/routes/channels/#channel_id/messages/#message_id/index.ts @@ -1,7 +1,6 @@ import { Channel, emitEvent, getPermission, MessageDeleteEvent, Message, MessageUpdateEvent } from "@fosscord/util"; import { Router, Response, Request } from "express"; import { MessageCreateSchema } from "../../../../../schema/Message"; - import { check } from "../../../../../util/instanceOf"; import { handleMessage, postHandleMessage } from "../../../../../util/Message"; @@ -32,7 +31,7 @@ router.patch("/", check(MessageCreateSchema), async (req: Request, res: Response }); await Promise.all([ - new_message.save(), + new_message!.save(), await emitEvent({ event: "MESSAGE_UPDATE", channel_id, diff --git a/api/src/routes/users/@me/index.ts b/api/src/routes/users/@me/index.ts index d5a5723c..68649215 100644 --- a/api/src/routes/users/@me/index.ts +++ b/api/src/routes/users/@me/index.ts @@ -1,5 +1,5 @@ import { Router, Request, Response } from "express"; -import { User } from "@fosscord/util"; +import { User, PrivateUserProjection } from "@fosscord/util"; import { UserModifySchema } from "../../../schema/User"; import { check } from "../../../util/instanceOf"; import { handleFile } from "../../../util/cdn"; @@ -7,30 +7,9 @@ import { handleFile } from "../../../util/cdn"; const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { - res.json(await User.getPublicUser(req.user_id)); + res.json(await User.getPublicUser(req.user_id, { select: PrivateUserProjection })); }); -const UserUpdateProjection = [ - "accent_color", - "avatar", - "banner", - "bio", - "bot", - "discriminator", - "email", - "flags", - "id", - "locale", - "mfa_enabled", - "nsfw_alllowed", - "phone", - "public_flags", - "purchased_flags", - // "token", // this isn't saved in the db and needs to be set manually - "username", - "verified" -]; - router.patch("/", check(UserModifySchema), async (req: Request, res: Response) => { const body = req.body as UserModifySchema; diff --git a/bundle/database.db b/bundle/database.db deleted file mode 100644 index 2d4abd490aa25b3803c17e195c4a4bb2e633c7b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225280 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 diff --git a/util/package-lock.json b/util/package-lock.json index 47aca2d1..571fffbe 100644 --- a/util/package-lock.json +++ b/util/package-lock.json @@ -17,7 +17,7 @@ "env-paths": "^2.2.1", "jsonwebtoken": "^8.5.1", "lambert-server": "^1.2.10", - "missing-native-js-functions": "^1.2.11", + "missing-native-js-functions": "^1.2.13", "node-fetch": "^2.6.1", "patch-package": "^6.4.7", "pg": "^8.7.1", @@ -6338,9 +6338,9 @@ } }, "node_modules/missing-native-js-functions": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.11.tgz", - "integrity": "sha512-U97IscNBL4Wg9adYjEBT46Hb0Ld5dPT8vbdwFX+TNzGrFQCc4WqoGAZouaLNFwUqxzzHZ9DVg59unwnQyeIIQg==" + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.13.tgz", + "integrity": "sha512-1RAArfUkrGkj5N3xJVW251F2PvfP2ozAcxsLLDR6uiiAixTP5Abh8zzGMadepbqgiHC0FGlTSAUNbh9abN4Osg==" }, "node_modules/mkdirp": { "version": "1.0.4", @@ -13735,9 +13735,9 @@ } }, "missing-native-js-functions": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.11.tgz", - "integrity": "sha512-U97IscNBL4Wg9adYjEBT46Hb0Ld5dPT8vbdwFX+TNzGrFQCc4WqoGAZouaLNFwUqxzzHZ9DVg59unwnQyeIIQg==" + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.13.tgz", + "integrity": "sha512-1RAArfUkrGkj5N3xJVW251F2PvfP2ozAcxsLLDR6uiiAixTP5Abh8zzGMadepbqgiHC0FGlTSAUNbh9abN4Osg==" }, "mkdirp": { "version": "1.0.4", diff --git a/util/package.json b/util/package.json index 39af7526..38cd8d35 100644 --- a/util/package.json +++ b/util/package.json @@ -44,7 +44,7 @@ "env-paths": "^2.2.1", "jsonwebtoken": "^8.5.1", "lambert-server": "^1.2.10", - "missing-native-js-functions": "^1.2.11", + "missing-native-js-functions": "^1.2.13", "node-fetch": "^2.6.1", "patch-package": "^6.4.7", "pg": "^8.7.1", diff --git a/util/src/entities/AuditLog.ts b/util/src/entities/AuditLog.ts index ceeb21fd..ae9feb76 100644 --- a/util/src/entities/AuditLog.ts +++ b/util/src/entities/AuditLog.ts @@ -42,17 +42,17 @@ export enum AuditLogEvents { } @Entity("audit_logs") -export class AuditLogEntry extends BaseClass { +export class AuditLog extends BaseClass { @JoinColumn({ name: "target_id" }) @ManyToOne(() => User) target?: User; @Column({ nullable: true }) - @RelationId((auditlog: AuditLogEntry) => auditlog.user) + @RelationId((auditlog: AuditLog) => auditlog.user) user_id: string; @JoinColumn({ name: "user_id" }) - @ManyToOne(() => User) + @ManyToOne(() => User, (user: User) => user.id) user: User; @Column({ diff --git a/util/src/entities/BaseClass.ts b/util/src/entities/BaseClass.ts index 0856ccd1..403a6fc6 100644 --- a/util/src/entities/BaseClass.ts +++ b/util/src/entities/BaseClass.ts @@ -8,19 +8,19 @@ import "missing-native-js-functions"; export class BaseClass extends BaseEntity { @PrimaryColumn() - id: string = Snowflake.generate(); + id: string; // @ts-ignore - constructor(public props?: any) { + constructor(private props?: any) { super(); this.assign(props); } - get construct(): any { + private get construct(): any { return this.constructor; } - get metadata() { + private get metadata() { return this.construct.getRepository().metadata as EntityMetadata; } @@ -48,6 +48,8 @@ export class BaseClass extends BaseEntity { this[key] = props[key]; } } + + if (!this.id) this.id = Snowflake.generate(); } @BeforeUpdate() diff --git a/util/src/entities/Member.ts b/util/src/entities/Member.ts index d2d78bb9..e1773730 100644 --- a/util/src/entities/Member.ts +++ b/util/src/entities/Member.ts @@ -12,6 +12,7 @@ import { } from "../interfaces"; import { HTTPError } from "lambert-server"; import { Role } from "./Role"; +import { ReadState } from "./ReadState"; @Entity("members") export class Member extends BaseClass { @@ -53,8 +54,8 @@ export class Member extends BaseClass { settings: UserGuildSettings; // TODO: update - @Column({ type: "simple-json" }) - read_state: Record; + // @Column({ type: "simple-json" }) + // read_state: ReadState; static async IsInGuildOrFail(user_id: string, guild_id: string) { if (await Member.count({ id: user_id, guild: { id: guild_id } })) return true; @@ -206,7 +207,7 @@ export class Member extends BaseClass { Member.insert({ ...member, roles: undefined, - read_state: {}, + // read_state: {}, settings: { channel_overrides: [], message_notifications: 0, diff --git a/util/src/entities/Message.ts b/util/src/entities/Message.ts index 542b2b55..aacca526 100644 --- a/util/src/entities/Message.ts +++ b/util/src/entities/Message.ts @@ -139,7 +139,7 @@ export class Message extends BaseClass { reactions: Reaction[]; @Column({ type: "text", nullable: true }) - nonce?: string | number; + nonce?: string; @Column({ nullable: true }) pinned?: boolean; diff --git a/util/src/entities/User.ts b/util/src/entities/User.ts index 39f654be..1b4ce351 100644 --- a/util/src/entities/User.ts +++ b/util/src/entities/User.ts @@ -4,33 +4,53 @@ import { BitField } from "../util/BitField"; import { Relationship } from "./Relationship"; import { ConnectedAccount } from "./ConnectedAccount"; import { HTTPError } from "lambert-server"; -import { Channel } from "./Channel"; -type PublicUserKeys = - | "username" - | "discriminator" - | "id" - | "public_flags" - | "avatar" - | "accent_color" - | "banner" - | "bio" - | "bot"; -export const PublicUserProjection: PublicUserKeys[] = [ - "username", - "discriminator", - "id", - "public_flags", - "avatar", - "accent_color", - "banner", - "bio", - "bot", -]; +export enum PublicUserEnum { + username, + discriminator, + id, + public_flags, + avatar, + accent_color, + banner, + bio, + bot, +} +export type PublicUserKeys = keyof typeof PublicUserEnum; + +export enum PrivateUserEnum { + flags, + mfa_enabled, + email, + phone, + verified, + nsfw_allowed, + premium, + premium_type, + disabled, + // locale +} +export type PrivateUserKeys = keyof typeof PrivateUserEnum | PublicUserKeys; + +export const PublicUserProjection = Object.values(PublicUserEnum).filter( + (x) => typeof x === "string" +) as PublicUserKeys[]; +export const PrivateUserProjection = [ + ...PublicUserProjection, + Object.values(PrivateUserEnum).filter((x) => typeof x === "string"), +] as PrivateUserKeys[]; // Private user data that should never get sent to the client export type PublicUser = Pick; +export interface UserPublic extends Pick {} + +export interface UserPrivate extends Pick { + locale: string; +} + +// TODO: add purchased_flags, premium_usage_flags + @Entity("users") export class User extends BaseClass { @Column() diff --git a/util/src/tes.ts b/util/src/tes.ts deleted file mode 100644 index e326dee1..00000000 --- a/util/src/tes.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { performance } from "perf_hooks"; -import { Guild, Relationship, RelationshipType } from "./entities"; -import { User } from "./entities/User"; -import { initDatabase } from "./util"; - -initDatabase().then(async (x) => { - try { - const user = await new User({ - guilds: [], - discriminator: "1", - username: "test", - flags: "0", - public_flags: "0", - id: "0", - }).save(); - - user.relationships = [new Relationship({ type: RelationshipType.friends })]; - - user.save(); - } catch (error) { - console.error(error); - } -});