From 72657e73c86e81020dba7e5a1b1cb3a57c8e670b Mon Sep 17 00:00:00 2001 From: mrjvs Date: Fri, 24 Nov 2023 18:00:06 +0100 Subject: [PATCH 1/3] add update session endpoint --- package.json | 2 +- src/routes/sessions/session.ts | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c2a78d4..88e99bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "backend", - "version": "1.1.2", + "version": "1.1.3", "private": true, "homepage": "https://github.com/movie-web/backend", "engines": { diff --git a/src/routes/sessions/session.ts b/src/routes/sessions/session.ts index b8393e2..0f0eced 100644 --- a/src/routes/sessions/session.ts +++ b/src/routes/sessions/session.ts @@ -1,4 +1,4 @@ -import { Session } from '@/db/models/Session'; +import { Session, formatSession } from '@/db/models/Session'; import { StatusError } from '@/services/error'; import { handle } from '@/services/handler'; import { makeRouter } from '@/services/router'; @@ -32,4 +32,32 @@ export const sessionRouter = makeRouter((app) => { }; }), ); + + app.patch( + '/sessions/:sid', + { + schema: { + params: z.object({ + sid: z.string(), + }), + body: z.object({ + name: z.string().optional(), + }), + }, + }, + handle(async ({ auth, params, body, em }) => { + await auth.assert(); + + const targetedSession = await em.findOne(Session, { id: params.sid }); + if (!targetedSession) throw new StatusError('Not found', 404); + if (targetedSession.id !== params.sid) + throw new StatusError('Cannot edit sessions other than your own', 401); + + if (body.name) targetedSession.device = body.name; + + await em.persistAndFlush(targetedSession); + + return formatSession(targetedSession); + }), + ); }); From 8a3c0d6edb60ea3aa2b9745f37467d9bd6cf5868 Mon Sep 17 00:00:00 2001 From: mrjvs Date: Fri, 24 Nov 2023 18:40:54 +0100 Subject: [PATCH 2/3] add settings nullable + undefined difference --- src/routes/sessions/session.ts | 2 +- src/routes/users/settings.ts | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/routes/sessions/session.ts b/src/routes/sessions/session.ts index 0f0eced..74520f3 100644 --- a/src/routes/sessions/session.ts +++ b/src/routes/sessions/session.ts @@ -41,7 +41,7 @@ export const sessionRouter = makeRouter((app) => { sid: z.string(), }), body: z.object({ - name: z.string().optional(), + name: z.string().min(1).optional(), }), }, }, diff --git a/src/routes/users/settings.ts b/src/routes/users/settings.ts index e905412..de315ee 100644 --- a/src/routes/users/settings.ts +++ b/src/routes/users/settings.ts @@ -38,9 +38,9 @@ export const userSettingsRouter = makeRouter((app) => { uid: z.string(), }), body: z.object({ - applicationLanguage: z.string().optional(), - applicationTheme: z.string().optional(), - defaultSubtitleLanguage: z.string().optional(), + applicationLanguage: z.string().nullable().optional(), + applicationTheme: z.string().nullable().optional(), + defaultSubtitleLanguage: z.string().nullable().optional(), }), }, }, @@ -58,12 +58,12 @@ export const userSettingsRouter = makeRouter((app) => { settings.id = params.uid; } - if (body.applicationLanguage) + if (body.applicationLanguage !== undefined) settings.applicationLanguage = body.applicationLanguage; - if (body.applicationTheme) - settings.applicationTheme = body.applicationTheme; - if (body.defaultSubtitleLanguage) + if (body.defaultSubtitleLanguage !== undefined) settings.defaultSubtitleLanguage = body.defaultSubtitleLanguage; + if (body.applicationTheme !== undefined) + settings.applicationTheme = body.applicationTheme; await em.persistAndFlush(settings); return formatUserSettings(settings); From 6d2dcd04e978fc90fb198535335d81e913aaa998 Mon Sep 17 00:00:00 2001 From: William Oldham Date: Fri, 24 Nov 2023 18:55:20 +0000 Subject: [PATCH 3/3] Apply suggestions from code review --- src/routes/sessions/session.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/sessions/session.ts b/src/routes/sessions/session.ts index 74520f3..59ca037 100644 --- a/src/routes/sessions/session.ts +++ b/src/routes/sessions/session.ts @@ -41,7 +41,7 @@ export const sessionRouter = makeRouter((app) => { sid: z.string(), }), body: z.object({ - name: z.string().min(1).optional(), + deviceName: z.string().min(1).optional(), }), }, }, @@ -53,7 +53,7 @@ export const sessionRouter = makeRouter((app) => { if (targetedSession.id !== params.sid) throw new StatusError('Cannot edit sessions other than your own', 401); - if (body.name) targetedSession.device = body.name; + if (body.deviceName) targetedSession.device = body.deviceName; await em.persistAndFlush(targetedSession);