aboutsummaryrefslogtreecommitdiff
path: root/src/graphql/anime/resolvers.ts
blob: 2b897eda450fb8c1bbdcbe603aa9b33abc77d438 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import type { WithIndex } from "../$types";
import type { Resolvers as RootResolvers } from "../$types";

type AnimeResolvers = Pick<
	RootResolvers,
	"Query" | "Anime" | "Subtitles" | "SubtitleSchedule" | "Subtitle"
>;

export const resolvers: WithIndex<AnimeResolvers> = {
	Query: {
		Anime: async (_, args) => {
			const timezone = args.timezone || "Asia/Tokyo";

			return {
				subtitles: {
					timezone,
					schedule: Object.fromEntries(
						Object.entries(
							(
								await (
									await fetch(
										`https://subsplease.org/api/?f=schedule&tz=${timezone}`,
									)
								).json()
							).schedule,
						).map(([key, value]) => [key.toLowerCase(), value]),
					),
				},
			};
		},
	},
};