soc_site-astro/src/graphql/apolloClient.mts
2024-09-18 20:33:41 -06:00

24 lines
No EOL
862 B
TypeScript

import ApolloPackage from '@apollo/client'
const { ApolloClient, InMemoryCache } = ApolloPackage;
import { SchemaLink } from "@apollo/client/link/schema"
import { makeExecutableSchema } from "@graphql-tools/schema";
import { getSession } from 'auth-astro/server';
import type { Session } from '@auth/core/types';
import { typeDefs } from "./__generated__/typeDefs.generated";
import resolvers from '@/graphql/resolvers'
import db from 'sequelize';
const schema = makeExecutableSchema({ typeDefs, resolvers })
export type ResolverContext = { request?: Request, session?: Session }
export async function getApolloClient(request?: Request) {
const session = request ? await getSession(request) : null
return new ApolloClient({
ssrMode: true,
link: new SchemaLink({ schema, context: { request, session, db } }),
cache: new InMemoryCache()
})
}