File tree 3 files changed +61
-0
lines changed
3 files changed +61
-0
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import { createLaunchRecord } from '@/controllers/create-launch-record.ts'
5
5
import { deleteLaunchRecord } from '@/controllers/delete-launch-record.ts'
6
6
import { deleteRom } from '@/controllers/delete-rom.ts'
7
7
import { getLaunchRecords } from '@/controllers/get-launch-records.ts'
8
+ import { updatePreference } from '@/controllers/update-preference.ts'
8
9
import { createRoms } from '../controllers/create-roms.ts'
9
10
import { createState } from '../controllers/create-state.ts'
10
11
import { getRomContent } from '../controllers/get-rom-content.ts'
@@ -160,4 +161,11 @@ export function addRoutes(app: Hono) {
160
161
return c . json ( result )
161
162
} ,
162
163
)
164
+
165
+ app . post ( 'preference' , async ( c ) => {
166
+ const formData = await c . req . formData ( )
167
+ const preference = formData . get ( 'preference' )
168
+ const result = await updatePreference ( preference )
169
+ return c . json ( result )
170
+ } )
163
171
}
Original file line number Diff line number Diff line change
1
+ import { eq } from 'drizzle-orm'
2
+ import { merge } from 'es-toolkit'
3
+ import { getContextData } from 'waku/middleware/context'
4
+ import { defaultPreference } from '../constants/preference.ts'
5
+ import { userPreferenceTable } from '../databases/library/schema.ts'
6
+
7
+ export async function getPreference ( ) {
8
+ const { currentUser, db } = getContextData ( )
9
+
10
+ const where = eq ( userPreferenceTable . user_id , currentUser . id )
11
+ const results = await db . library . select ( ) . from ( userPreferenceTable ) . where ( where )
12
+ const preference = structuredClone ( defaultPreference )
13
+ const userPreference = results [ 0 ] . content
14
+ merge ( preference , userPreference as any )
15
+ return preference
16
+ }
Original file line number Diff line number Diff line change
1
+ import { eq } from 'drizzle-orm'
2
+ import { merge } from 'es-toolkit'
3
+ import { getContextData } from 'waku/middleware/context'
4
+ import { userPreferenceTable } from '@/databases/library/schema.ts'
5
+
6
+ export async function updatePreference ( preference ) {
7
+ const { currentUser, db } = getContextData ( )
8
+
9
+ const where = eq ( userPreferenceTable . user_id , currentUser . id )
10
+ const results = await db . library . select ( ) . from ( userPreferenceTable ) . where ( where )
11
+
12
+ let newPreferenceResult
13
+ if ( results . length > 0 ) {
14
+ const [ { emulator, ui } ] = results
15
+ const newPreference : any = { }
16
+ if ( emulator ) {
17
+ merge ( emulator , preference . emulator )
18
+ newPreference . emulator = emulator
19
+ }
20
+ if ( ui ) {
21
+ merge ( ui , preference . ui )
22
+ newPreference . ui = ui
23
+ }
24
+ newPreferenceResult = await db . library
25
+ . update ( userPreferenceTable )
26
+ . set ( { ...newPreference , user_id : currentUser . id } )
27
+ . where ( where )
28
+ . returning ( )
29
+ } else {
30
+ newPreferenceResult = await db . library
31
+ . insert ( userPreferenceTable )
32
+ . values ( { ...preference , user_id : currentUser . id } )
33
+ . returning ( )
34
+ }
35
+
36
+ return newPreferenceResult . content
37
+ }
You can’t perform that action at this time.
0 commit comments