@@ -3,6 +3,8 @@ import { fileTypeFromBuffer } from 'file-type'
33import { revalidatePath } from 'next/cache'
44import { after } from 'next/server'
55import { z } from 'zod'
6+ import { createKeysRepository } from '@/core/modules/keys/repository.server'
7+ import { CreateApiKeySchema } from '@/core/modules/keys/schemas'
68import {
79 AddTeamMemberSchema ,
810 CreateTeamSchema ,
@@ -42,6 +44,12 @@ const teamsRepositoryProcedure = protectedTeamProcedure.use(
4244 } ) )
4345)
4446
47+ const keysRepositoryProcedure = protectedTeamProcedure . use (
48+ withTeamAuthedRequestRepository ( createKeysRepository , ( keysRepository ) => ( {
49+ keysRepository,
50+ } ) )
51+ )
52+
4553const getStorageFilePath = ( folderPath : string , fileName : string ) =>
4654 `${ folderPath } /${ fileName } `
4755
@@ -55,6 +63,67 @@ export const teamsRouter = createTRPCRouter({
5563
5664 return teamsResult . data
5765 } ) ,
66+
67+ listApiKeys : keysRepositoryProcedure . query ( async ( { ctx } ) => {
68+ const result = await ctx . keysRepository . listTeamApiKeys ( )
69+
70+ if ( ! result . ok ) {
71+ throwTRPCErrorFromRepoError ( result . error )
72+ }
73+
74+ return { apiKeys : result . data }
75+ } ) ,
76+
77+ createApiKey : keysRepositoryProcedure
78+ . input ( CreateApiKeySchema )
79+ . mutation ( async ( { ctx, input } ) => {
80+ const { name } = input
81+
82+ const result = await ctx . keysRepository . createApiKey ( name )
83+
84+ if ( ! result . ok ) {
85+ l . error ( {
86+ key : 'create_api_key_trpc:error' ,
87+ message : result . error . message ,
88+ error : result . error ,
89+ team_id : ctx . teamId ,
90+ user_id : ctx . session . user . id ,
91+ context : { name } ,
92+ } )
93+
94+ throwTRPCErrorFromRepoError ( result . error )
95+ }
96+
97+ return { createdApiKey : result . data }
98+ } ) ,
99+
100+ deleteApiKey : keysRepositoryProcedure
101+ . input (
102+ z . object ( {
103+ apiKeyId : z . uuid ( ) ,
104+ } )
105+ )
106+ . mutation ( async ( { ctx, input } ) => {
107+ const { apiKeyId } = input
108+
109+ const result = await ctx . keysRepository . deleteApiKey ( apiKeyId )
110+
111+ if ( ! result . ok ) {
112+ l . error ( {
113+ key : 'delete_api_key_trpc:error' ,
114+ message : result . error . message ,
115+ error : result . error ,
116+ team_id : ctx . teamId ,
117+ user_id : ctx . session . user . id ,
118+ context : { apiKeyId } ,
119+ } )
120+
121+ throwTRPCErrorFromRepoError ( result . error )
122+ }
123+
124+ return undefined
125+ } ) ,
126+
58127 create : userTeamsRepositoryProcedure
59128 . input ( CreateTeamSchema )
60129 . mutation ( async ( { ctx, input } ) => {
0 commit comments