Compare commits
5 Commits
f2950ecf86
...
v1.9.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f34fd644b8
|
||
|
|
c827c2e58d
|
||
|
|
30bcfdb436
|
||
|
|
0b4753c47b
|
||
|
|
69b90849fd
|
2
backend/.migrations/0009_add_privacy_settings.sql
Normal file
2
backend/.migrations/0009_add_privacy_settings.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE "users" ADD COLUMN "show_online_status" boolean DEFAULT true NOT NULL;--> statement-breakpoint
|
||||
ALTER TABLE "users" ADD COLUMN "show_read_receipts" boolean DEFAULT true NOT NULL;
|
||||
1
backend/.migrations/0010_update_password_hash_length.sql
Normal file
1
backend/.migrations/0010_update_password_hash_length.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE "users" ALTER COLUMN "password_hash" SET DATA TYPE varchar(255);
|
||||
2094
backend/.migrations/meta/0009_snapshot.json
Normal file
2094
backend/.migrations/meta/0009_snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
2094
backend/.migrations/meta/0010_snapshot.json
Normal file
2094
backend/.migrations/meta/0010_snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -64,6 +64,20 @@
|
||||
"when": 1769696731978,
|
||||
"tag": "0008_bitter_darwin",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"version": "7",
|
||||
"when": 1769717126917,
|
||||
"tag": "0009_add_privacy_settings",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"version": "7",
|
||||
"when": 1769718997591,
|
||||
"tag": "0010_update_password_hash_length",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@memegoat/backend",
|
||||
"version": "1.9.3",
|
||||
"version": "1.9.5",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
|
||||
@@ -21,14 +21,19 @@ const getPgpKey = () => process.env.PGP_ENCRYPTION_KEY || "default-pgp-key";
|
||||
* withAutomaticPgpDecrypt(users.email);
|
||||
* ```
|
||||
*/
|
||||
export const pgpEncrypted = customType<{ data: string; driverData: Buffer }>({
|
||||
export const pgpEncrypted = customType<{
|
||||
data: string | null;
|
||||
driverData: Buffer | string | null | SQL;
|
||||
}>({
|
||||
dataType() {
|
||||
return "bytea";
|
||||
},
|
||||
toDriver(value: string): SQL {
|
||||
toDriver(value: string | null): SQL | null {
|
||||
if (value === null) return null;
|
||||
return sql`pgp_sym_encrypt(${value}, ${getPgpKey()})`;
|
||||
},
|
||||
fromDriver(value: Buffer | string): string {
|
||||
fromDriver(value: Buffer | string | null | any): string | null {
|
||||
if (value === null || value === undefined) return null;
|
||||
if (typeof value === "string") return value;
|
||||
return value.toString();
|
||||
},
|
||||
|
||||
@@ -29,7 +29,7 @@ export const users = pgTable(
|
||||
displayName: varchar("display_name", { length: 32 }),
|
||||
|
||||
username: varchar("username", { length: 32 }).notNull().unique(),
|
||||
passwordHash: varchar("password_hash", { length: 100 }).notNull(),
|
||||
passwordHash: varchar("password_hash", { length: 255 }).notNull(),
|
||||
avatarUrl: varchar("avatar_url", { length: 512 }),
|
||||
bio: varchar("bio", { length: 255 }),
|
||||
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { forwardRef, Module } from "@nestjs/common";
|
||||
import { AuthModule } from "../auth/auth.module";
|
||||
import { RealtimeModule } from "../realtime/realtime.module";
|
||||
import { UsersModule } from "../users/users.module";
|
||||
import { MessagesController } from "./messages.controller";
|
||||
import { MessagesService } from "./messages.service";
|
||||
import { MessagesRepository } from "./repositories/messages.repository";
|
||||
|
||||
@Module({
|
||||
imports: [AuthModule, RealtimeModule],
|
||||
imports: [AuthModule, RealtimeModule, forwardRef(() => UsersModule)],
|
||||
controllers: [MessagesController],
|
||||
providers: [MessagesService, MessagesRepository],
|
||||
exports: [MessagesService],
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { ForbiddenException, Injectable } from "@nestjs/common";
|
||||
import {
|
||||
ForbiddenException,
|
||||
forwardRef,
|
||||
Inject,
|
||||
Injectable,
|
||||
} from "@nestjs/common";
|
||||
import { EventsGateway } from "../realtime/events.gateway";
|
||||
import { UsersService } from "../users/users.service";
|
||||
import type { CreateMessageDto } from "./dto/create-message.dto";
|
||||
@@ -9,6 +14,7 @@ export class MessagesService {
|
||||
constructor(
|
||||
private readonly messagesRepository: MessagesRepository,
|
||||
private readonly eventsGateway: EventsGateway,
|
||||
@Inject(forwardRef(() => UsersService))
|
||||
private readonly usersService: UsersService,
|
||||
) {}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@memegoat/frontend",
|
||||
"version": "1.9.3",
|
||||
"version": "1.9.5",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@memegoat/source",
|
||||
"version": "1.9.3",
|
||||
"version": "1.9.5",
|
||||
"description": "",
|
||||
"scripts": {
|
||||
"version:get": "cmake -P version.cmake GET",
|
||||
|
||||
Reference in New Issue
Block a user