@@ -5,19 +5,14 @@ import { apps } from "@homarr/db/schema/sqlite";
5
5
import { validation , z } from "@homarr/validation" ;
6
6
7
7
import { createTRPCRouter , protectedProcedure , publicProcedure } from "../trpc" ;
8
+ import { selectAppSchema } from "@homarr/db/validationSchemas/app" ;
8
9
9
10
export const appRouter = createTRPCRouter ( {
10
11
all : publicProcedure
11
12
. input ( z . void ( ) )
12
13
. output (
13
14
z . array (
14
- z . object ( {
15
- name : z . string ( ) ,
16
- id : z . string ( ) ,
17
- description : z . string ( ) . nullable ( ) ,
18
- iconUrl : z . string ( ) ,
19
- href : z . string ( ) . nullable ( ) ,
20
- } ) ,
15
+ selectAppSchema
21
16
) ,
22
17
)
23
18
. meta ( { openapi : { method : "GET" , path : "/api/apps" , tags : [ "apps" ] , protect : true } } )
@@ -30,13 +25,7 @@ export const appRouter = createTRPCRouter({
30
25
. input ( z . object ( { query : z . string ( ) , limit : z . number ( ) . min ( 1 ) . max ( 100 ) . default ( 10 ) } ) )
31
26
. output (
32
27
z . array (
33
- z . object ( {
34
- name : z . string ( ) ,
35
- id : z . string ( ) ,
36
- description : z . string ( ) . nullable ( ) ,
37
- iconUrl : z . string ( ) ,
38
- href : z . string ( ) . nullable ( ) ,
39
- } ) ,
28
+ selectAppSchema ,
40
29
) ,
41
30
)
42
31
. meta ( { openapi : { method : "GET" , path : "/api/apps/search" , tags : [ "apps" ] , protect : true } } )
@@ -51,11 +40,7 @@ export const appRouter = createTRPCRouter({
51
40
. input ( z . void ( ) )
52
41
. output (
53
42
z . array (
54
- z . object ( {
55
- name : z . string ( ) ,
56
- id : z . string ( ) ,
57
- iconUrl : z . string ( ) ,
58
- } ) ,
43
+ selectAppSchema . pick ( { id : true , name : true , iconUrl : true } ) ,
59
44
) ,
60
45
)
61
46
. meta ( {
@@ -79,13 +64,7 @@ export const appRouter = createTRPCRouter({
79
64
byId : publicProcedure
80
65
. input ( validation . common . byId )
81
66
. output (
82
- z . object ( {
83
- name : z . string ( ) ,
84
- id : z . string ( ) ,
85
- description : z . string ( ) . nullable ( ) ,
86
- iconUrl : z . string ( ) ,
87
- href : z . string ( ) . nullable ( ) ,
88
- } ) ,
67
+ selectAppSchema ,
89
68
)
90
69
. meta ( { openapi : { method : "GET" , path : "/api/apps/{id}" , tags : [ "apps" ] , protect : true } } )
91
70
. query ( async ( { ctx, input } ) => {
@@ -115,28 +94,32 @@ export const appRouter = createTRPCRouter({
115
94
href : input . href ,
116
95
} ) ;
117
96
} ) ,
118
- update : protectedProcedure . input ( validation . app . edit ) . mutation ( async ( { ctx, input } ) => {
119
- const app = await ctx . db . query . apps . findFirst ( {
120
- where : eq ( apps . id , input . id ) ,
121
- } ) ;
122
-
123
- if ( ! app ) {
124
- throw new TRPCError ( {
125
- code : "NOT_FOUND" ,
126
- message : "App not found" ,
97
+ update : protectedProcedure
98
+ . input ( validation . app . edit )
99
+ . output ( z . void ( ) )
100
+ . meta ( { openapi : { method : "PATCH" , path : "/api/apps/{id}" , tags : [ "apps" ] , protect : true } } )
101
+ . mutation ( async ( { ctx, input } ) => {
102
+ const app = await ctx . db . query . apps . findFirst ( {
103
+ where : eq ( apps . id , input . id ) ,
127
104
} ) ;
128
- }
129
105
130
- await ctx . db
131
- . update ( apps )
132
- . set ( {
133
- name : input . name ,
134
- description : input . description ,
135
- iconUrl : input . iconUrl ,
136
- href : input . href ,
137
- } )
138
- . where ( eq ( apps . id , input . id ) ) ;
139
- } ) ,
106
+ if ( ! app ) {
107
+ throw new TRPCError ( {
108
+ code : "NOT_FOUND" ,
109
+ message : "App not found" ,
110
+ } ) ;
111
+ }
112
+
113
+ await ctx . db
114
+ . update ( apps )
115
+ . set ( {
116
+ name : input . name ,
117
+ description : input . description ,
118
+ iconUrl : input . iconUrl ,
119
+ href : input . href ,
120
+ } )
121
+ . where ( eq ( apps . id , input . id ) ) ;
122
+ } ) ,
140
123
delete : protectedProcedure
141
124
. output ( z . void ( ) )
142
125
. meta ( { openapi : { method : "DELETE" , path : "/api/apps/{id}" , tags : [ "apps" ] , protect : true } } )
0 commit comments