diff options
| author | Fuwn <[email protected]> | 2024-10-05 19:38:02 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-10-05 19:40:08 -0700 |
| commit | 37e76927cc72baad03c2ef200351aafeb4ea1e7e (patch) | |
| tree | f755d58ada1f3a37e3041ef75c231a847bb639b5 /src | |
| parent | fix(feeds): oauth refresh url (diff) | |
| download | due.moe-37e76927cc72baad03c2ef200351aafeb4ea1e7e.tar.xz due.moe-37e76927cc72baad03c2ef200351aafeb4ea1e7e.zip | |
feat(graphql): add subtitles
Diffstat (limited to 'src')
| -rw-r--r-- | src/graphql/anime/index.ts | 4 | ||||
| -rw-r--r-- | src/graphql/anime/resolvers.ts | 22 | ||||
| -rw-r--r-- | src/graphql/anime/schema.graphql | 29 | ||||
| -rw-r--r-- | src/graphql/server.ts | 3 |
4 files changed, 57 insertions, 1 deletions
diff --git a/src/graphql/anime/index.ts b/src/graphql/anime/index.ts new file mode 100644 index 00000000..925a7ece --- /dev/null +++ b/src/graphql/anime/index.ts @@ -0,0 +1,4 @@ +import typeDefs from './schema.graphql?raw'; +import { resolvers } from './resolvers'; + +export default { typeDefs, resolvers }; diff --git a/src/graphql/anime/resolvers.ts b/src/graphql/anime/resolvers.ts new file mode 100644 index 00000000..7d04082d --- /dev/null +++ b/src/graphql/anime/resolvers.ts @@ -0,0 +1,22 @@ +import type { WithIndex } from '../$types'; +import type { Resolvers } from './$types'; + +export const resolvers: WithIndex<Resolvers> = { + 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]) + ) + } + }; + } + } +}; diff --git a/src/graphql/anime/schema.graphql b/src/graphql/anime/schema.graphql new file mode 100644 index 00000000..d5774966 --- /dev/null +++ b/src/graphql/anime/schema.graphql @@ -0,0 +1,29 @@ +type Query { + Anime(timezone: String): Anime! +} + +type Anime { + subtitles: Subtitles +} + +type Subtitles { + timezone: String + schedule: SubtitleSchedule +} + +type SubtitleSchedule { + monday: [Subtitle] + tuesday: [Subtitle] + wednesday: [Subtitle] + thursday: [Subtitle] + friday: [Subtitle] + saturday: [Subtitle] + sunday: [Subtitle] +} + +type Subtitle { + title: String + page: String + image_url: String + time: String +} diff --git a/src/graphql/server.ts b/src/graphql/server.ts index 2d74d878..2dc183dc 100644 --- a/src/graphql/server.ts +++ b/src/graphql/server.ts @@ -1,7 +1,8 @@ import { createSchema, createServer } from 'sveltekit-graphql'; import userModule from './user'; +import animeModule from './anime'; -const schema = createSchema([userModule]); +const schema = createSchema([userModule, animeModule]); const server = createServer(schema); export default server; |