Merge branch 'dev' into fix-backend-captcha
This commit is contained in:
commit
66840d7894
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "backend",
|
||||
"version": "1.2.1",
|
||||
"version": "1.3.0",
|
||||
"private": true,
|
||||
"homepage": "https://github.com/movie-web/backend",
|
||||
"engines": {
|
||||
|
|
|
@ -12,6 +12,8 @@ export const ormConfigSchema = z.object({
|
|||
postgres: z.object({
|
||||
// connection URL for postgres database
|
||||
connection: z.string(),
|
||||
// whether to use SSL for the connection
|
||||
ssl: z.coerce.boolean().default(false),
|
||||
}),
|
||||
});
|
||||
|
||||
|
|
|
@ -48,6 +48,9 @@ export const configSchema = z.object({
|
|||
// Enable debug logging for MikroORM - Outputs queries and entity management logs
|
||||
// Do NOT use in production, leaks all sensitive data
|
||||
debugLogging: z.coerce.boolean().default(false),
|
||||
|
||||
// Enable SSL for the postgres connection
|
||||
ssl: z.coerce.boolean().default(false),
|
||||
}),
|
||||
crypto: z.object({
|
||||
// session secret. used for signing session tokens
|
||||
|
|
|
@ -483,6 +483,15 @@
|
|||
"primary": false,
|
||||
"nullable": true,
|
||||
"mappedType": "string"
|
||||
},
|
||||
"proxy_urls": {
|
||||
"name": "proxy_urls",
|
||||
"type": "text[]",
|
||||
"unsigned": false,
|
||||
"autoincrement": false,
|
||||
"primary": false,
|
||||
"nullable": true,
|
||||
"mappedType": "array"
|
||||
}
|
||||
},
|
||||
"name": "user_settings",
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
import { Migration } from '@mikro-orm/migrations';
|
||||
|
||||
export class Migration20231229214215 extends Migration {
|
||||
|
||||
async up(): Promise<void> {
|
||||
this.addSql('alter table "user_settings" add column "proxy_urls" text[] null;');
|
||||
}
|
||||
|
||||
async down(): Promise<void> {
|
||||
this.addSql('alter table "user_settings" drop column "proxy_urls";');
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
import { Entity, PrimaryKey, Property } from '@mikro-orm/core';
|
||||
import { ArrayType, Entity, PrimaryKey, Property } from '@mikro-orm/core';
|
||||
|
||||
@Entity({ tableName: 'user_settings' })
|
||||
export class UserSettings {
|
||||
|
@ -13,6 +13,9 @@ export class UserSettings {
|
|||
|
||||
@Property({ name: 'default_subtitle_language', nullable: true })
|
||||
defaultSubtitleLanguage?: string | null;
|
||||
|
||||
@Property({ name: 'proxy_urls', type: ArrayType, nullable: true })
|
||||
proxyUrls?: string[] | null;
|
||||
}
|
||||
|
||||
export interface UserSettingsDTO {
|
||||
|
@ -20,6 +23,7 @@ export interface UserSettingsDTO {
|
|||
applicationTheme?: string | null;
|
||||
applicationLanguage?: string | null;
|
||||
defaultSubtitleLanguage?: string | null;
|
||||
proxyUrls?: string[] | null;
|
||||
}
|
||||
|
||||
export function formatUserSettings(
|
||||
|
@ -30,5 +34,6 @@ export function formatUserSettings(
|
|||
applicationTheme: userSettings.applicationTheme,
|
||||
applicationLanguage: userSettings.applicationLanguage,
|
||||
defaultSubtitleLanguage: userSettings.defaultSubtitleLanguage,
|
||||
proxyUrls: userSettings.proxyUrls,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { ormConf } from '@/config/orm';
|
||||
import { makeOrmConfig } from '@/modules/mikro/orm';
|
||||
|
||||
export default makeOrmConfig(ormConf.postgres.connection);
|
||||
export default makeOrmConfig(ormConf.postgres.connection, ormConf.postgres.ssl);
|
||||
|
|
|
@ -18,6 +18,7 @@ export async function setupMikroORM() {
|
|||
conf.postgres.connection,
|
||||
conf.postgres.debugLogging,
|
||||
(msg) => log.info(msg),
|
||||
conf.postgres.ssl,
|
||||
);
|
||||
|
||||
if (conf.postgres.syncSchema) {
|
||||
|
|
|
@ -2,7 +2,10 @@ import { Options } from '@mikro-orm/core';
|
|||
import { MikroORM, PostgreSqlDriver } from '@mikro-orm/postgresql';
|
||||
import path from 'path';
|
||||
|
||||
export function makeOrmConfig(url: string): Options<PostgreSqlDriver> {
|
||||
export function makeOrmConfig(
|
||||
url: string,
|
||||
ssl: boolean,
|
||||
): Options<PostgreSqlDriver> {
|
||||
return {
|
||||
type: 'postgresql',
|
||||
clientUrl: url,
|
||||
|
@ -13,6 +16,11 @@ export function makeOrmConfig(url: string): Options<PostgreSqlDriver> {
|
|||
pathTs: './migrations',
|
||||
path: './migrations',
|
||||
},
|
||||
driverOptions: {
|
||||
connection: {
|
||||
ssl,
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -20,9 +28,10 @@ export async function createORM(
|
|||
url: string,
|
||||
debug: boolean,
|
||||
log: (msg: string) => void,
|
||||
ssl: boolean,
|
||||
) {
|
||||
return await MikroORM.init<PostgreSqlDriver>({
|
||||
...makeOrmConfig(url),
|
||||
...makeOrmConfig(url, ssl),
|
||||
logger: log,
|
||||
debug,
|
||||
});
|
||||
|
|
|
@ -41,6 +41,7 @@ export const userSettingsRouter = makeRouter((app) => {
|
|||
applicationLanguage: z.string().nullable().optional(),
|
||||
applicationTheme: z.string().nullable().optional(),
|
||||
defaultSubtitleLanguage: z.string().nullable().optional(),
|
||||
proxyUrls: z.string().array().nullable().optional(),
|
||||
}),
|
||||
},
|
||||
},
|
||||
|
@ -64,6 +65,7 @@ export const userSettingsRouter = makeRouter((app) => {
|
|||
settings.defaultSubtitleLanguage = body.defaultSubtitleLanguage;
|
||||
if (body.applicationTheme !== undefined)
|
||||
settings.applicationTheme = body.applicationTheme;
|
||||
if (body.proxyUrls !== undefined) settings.proxyUrls = body.proxyUrls;
|
||||
|
||||
await em.persistAndFlush(settings);
|
||||
return formatUserSettings(settings);
|
||||
|
|
Loading…
Reference in New Issue