Skip to content

Commit

Permalink
Feat(twemoji): Add profile router
Browse files Browse the repository at this point in the history
  • Loading branch information
yeicobF committed May 4, 2023
1 parent e6e8fd9 commit dc85161
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { createTRPCRouter } from "~/server/api/trpc";
import { postsRouter } from "./routers/posts";
import { profileRouter } from "./routers/profile";

/**
* This is the primary router for your server.
Expand All @@ -8,6 +9,7 @@ import { postsRouter } from "./routers/posts";
*/
export const appRouter = createTRPCRouter({
posts: postsRouter,
profile: profileRouter,
});

// export type definition of API
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { clerkClient } from "@clerk/nextjs/server";
import { TRPCError } from "@trpc/server";
import { z } from "zod";

import { createTRPCRouter, publicProcedure } from "~/server/api/trpc";
import { filterUserForClient } from "~/server/helpers/filterUserForClient";

export const profileRouter = createTRPCRouter({
getUserByUsername: publicProcedure
// La validación de tipos se realiza con zod mediante Type Inference, por lo
// que no tenemos que definir los tipos manualmente. Lo que devuelve el
// servidor será de estos tipos de datos. Es por eso que no tenemos que
// definir cada tipo de dato por sentencia.
// - Podemos tener un output validator para verificar que los
// datos de salida sean de ciertos tipos; aunque Theo prefiere filtrar los
// datos por su cuenta.
.input(
z.object({
username: z.string(),
})
)
// No necesitamos `ctx` porque no estamos accediendo a la base de datos de
// Prisma.
.query(async ({ input }) => {
// Solo tomamos el primer usuario.
const [user] = await clerkClient.users.getUserList({
username: [input.username],
});

if (user) {
return filterUserForClient(user);
}

throw new TRPCError({
code: "INTERNAL_SERVER_ERROR",
message: "User not found.",
});
}),
});

0 comments on commit dc85161

Please sign in to comment.