TanStackT
TanStack5mo ago
4 replies
foolish-indigo

Server Functions

Hello,
what is the best practice to initialize classes in server files with secret keys?
Can I just initialize them outside the server functions or should I always do it inside it?
Right now I'm doing it like so:

const GIPHY_API_KEY = process.env.GIPHY_API_KEY!;
const giphyFetch = new GiphyFetch(GIPHY_API_KEY); // is this safe to do outside?

const data = z.object({ offset: z.number().optional(), term: z.string() });

export const fetchGifs = createServerFn({ method: "POST" })
    .validator(data)
    .handler(async ({ data }): Promise<GifsResult> => {
        const { offset, term } = data;
        if (!GIPHY_API_KEY) {
            throw new Error("GIPHY_API_KEY is not set");
        }

        if (term === "") {
            console.log("fetchGifs called for trending with offset:", offset);
            return giphyFetch.trending({ offset, limit: 10 });
        }

        return giphyFetch.search(term, { offset, limit: 10 });
    });
Was this page helpful?