diff --git a/src/db/repo/user.repo.ts b/src/db/repo/user.repo.ts index ad04965fda132db122b44bfdfd99157b83b05249..69023a4883b63c6458b07cbab6347c3a968d1830 100644 --- a/src/db/repo/user.repo.ts +++ b/src/db/repo/user.repo.ts @@ -69,4 +69,13 @@ export class UserRepo { return userSchemas.userModelSchema.parse(ret) } + async delete(id: UserModel['id']): Promise<UserModel>{ + const [ret] = await db + .delete(userTable) + .where(eq(userTable.id, id)) + .returning() + + return userSchemas.userModelSchema.parse(ret) + } + } diff --git a/src/routes/user.routes.ts b/src/routes/user.routes.ts index d4f311f4f106f4d8b3695f889b585769fd6d9d6a..bef460814583a05c3b2bc67e80b4a301ed71b84a 100644 --- a/src/routes/user.routes.ts +++ b/src/routes/user.routes.ts @@ -75,3 +75,26 @@ export const userRouter = honoWithJwt() } }) + .post('/delete/:id', + async (c) => { + try { + const id = c.req.param('id') + const user = userSchemas.userDtoSchema.parse( + await service.delete(id!) + ) + + return c.json(user) + } catch (e) { + return c.json( + createApexError({ + status: 'error', + message: 'could not delete user', + code: HttpStatus.BAD_REQUEST, + path: c.req.routePath, + suggestion: 'check the input and try again', + }), + HttpStatus.BAD_REQUEST + ) + } + } + ) diff --git a/src/services/user.service.ts b/src/services/user.service.ts index 6c3597e44fe35b3a9959faa59b52ad1087e3b7d7..0cb95807bfe90582ca7edd44af04e6fe975e96bd 100644 --- a/src/services/user.service.ts +++ b/src/services/user.service.ts @@ -58,4 +58,9 @@ export class UserService { user.password = hashPassword(user.password) return this.repo.update(user) } + + async delete(user: UserModel['id']): Promise<UserModel> { + + return this.repo.delete(user) + } }