Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
deno-version: v2.3.0

- name: The Sacred Assembly aka Install Dependencies
run: "deno task install"
run: 'deno task install'

- name: The Scroll's Scrutiny aka Validate OpenAPI
if: ${{
Expand Down
2 changes: 1 addition & 1 deletion projects/api/deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@
"tasks": {
"test": "deno test --unstable --allow-all"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
} from './idsRequestSchema.ts';

const watchedAtSchema = z.object({
watched_at: z.string().datetime().optional(),
watched_at: z.string().datetime().nullish(),
});

const watchWithTileAndYearSchema = z.object({
Expand All @@ -26,7 +26,7 @@ const watchWithSeasonsSchema = z
}).merge(watchedAtSchema),
),
}).merge(watchedAtSchema),
).optional(),
).nullish(),
}).merge(watchedAtSchema);

const addMovieToHistorySchema = z
Expand Down Expand Up @@ -63,8 +63,8 @@ const addEpisodeToHistorySchema = z
}).merge(watchedAtSchema);

export const bulkMediaRequestSchema = z.object({
movies: z.array(addMovieToHistorySchema).optional(),
shows: z.array(addShowToHistorySchema).optional(),
seasons: z.array(addSeasonToHistorySchema).optional(),
episodes: z.array(addEpisodeToHistorySchema).optional(),
movies: z.array(addMovieToHistorySchema).nullish(),
shows: z.array(addShowToHistorySchema).nullish(),
seasons: z.array(addSeasonToHistorySchema).nullish(),
episodes: z.array(addEpisodeToHistorySchema).nullish(),
});
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ export const commentsSortParamsSchema = z.object({
'highest',
'lowest',
'plays',
]).optional(),
]).nullish(),
});
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { extendedQuerySchemaFactory } from './extendedQuerySchemaFactory.ts';

export const extendedMediaQuerySchema = extendedQuerySchemaFactory<['full', 'images', 'colors', 'streaming_ids']>()
export const extendedMediaQuerySchema = extendedQuerySchemaFactory<
['full', 'images', 'colors', 'streaming_ids']
>();
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { extendedQuerySchemaFactory } from './extendedQuerySchemaFactory.ts';

export const extendedPeopleQuerySchema = extendedQuerySchemaFactory<['full', 'images']>();
export const extendedPeopleQuerySchema = extendedQuerySchemaFactory<
['full', 'images']
>();
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { extendedQuerySchemaFactory } from './extendedQuerySchemaFactory.ts';

export const extendedProfileQuerySchema = extendedQuerySchemaFactory<['full', 'images', 'vip']>();
export const extendedProfileQuerySchema = extendedQuerySchemaFactory<
['full', 'images', 'vip']
>();
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export const extendedQuerySchemaFactory = <T extends string[]>() =>
z.object({
extended: z
.custom<CombinationsFrom<T>>()
.optional()
.nullish()
.openapi({
description: 'Extended information to include in the response.',
}),
Expand Down
10 changes: 5 additions & 5 deletions projects/api/src/contracts/_internal/request/idsRequestSchema.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { z } from '../z.ts';

const allMediaIdsSchema = z.object({
trakt: z.number().int().optional().openapi({ description: 'Trakt ID' }),
slug: z.string().optional().openapi({ description: 'Slug' }),
imdb: z.string().optional().openapi({ description: 'IMDb ID' }),
tmdb: z.number().int().optional().openapi({ description: 'TMDb ID' }),
tvdb: z.number().int().optional().openapi({ description: 'TVDb ID' }),
trakt: z.number().int().nullish().openapi({ description: 'Trakt ID' }),
slug: z.string().nullish().openapi({ description: 'Slug' }),
imdb: z.string().nullish().openapi({ description: 'IMDb ID' }),
tmdb: z.number().int().nullish().openapi({ description: 'TMDb ID' }),
tvdb: z.number().int().nullish().openapi({ description: 'TVDb ID' }),
});

const showMediaIdsSchema = allMediaIdsSchema;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { z } from '../z.ts';

export const ignoreQuerySchema = z.object({
ignore_watched: z.boolean().optional().openapi({
ignore_watched: z.boolean().nullish().openapi({
description: 'Ignore watched items.',
}),
ignore_collected: z.boolean().optional().openapi({
ignore_collected: z.boolean().nullish().openapi({
description: 'Ignore collected items.',
}),
ignore_watchlisted: z.boolean().optional().openapi({
ignore_watchlisted: z.boolean().nullish().openapi({
description: 'Ignore watchlisted items.',
}),
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export const limitlessQuerySchema = z.object({
limit: z.number()
.int()
.or(z.literal('all'))
.optional()
.nullish()
.openapi({
description: `The number of items per page, can be a number or the value all`,
type: 'string',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ import type { CombinationsFrom } from '../../../types/CombinationsFrom.ts';
import { z } from '../z.ts';

export const linksQuerySchema = z.object({
links: z.custom<CombinationsFrom<['tvos', 'direct', 'android']>>().optional(),
links: z.custom<CombinationsFrom<['tvos', 'direct', 'android']>>().nullish(),
});
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { z } from '../z.ts';

export const mediaFilterParamsSchema = z.object({
watchnow: z.enum(['favorites', 'any']).optional(),
genres: z.string().optional(),
years: z.string().optional(),
ratings: z.string().optional(),
watchnow: z.enum(['favorites', 'any']).nullish(),
genres: z.string().nullish(),
years: z.string().nullish(),
ratings: z.string().nullish(),
});
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { z } from '../z.ts';

export const pageQuerySchema = z.object({
page: z.number().int().optional().openapi({
page: z.number().int().nullish().openapi({
description: 'The page number to retrieve',
}),
limit: z.number().int().optional().openapi({
limit: z.number().int().nullish().openapi({
description: 'The number of items per page',
}),
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import { sortDirectionSchema } from '../response/sortDirectionSchema.ts';
import { z } from '../z.ts';

export const sortQuerySchema = z.object({
sort_by: z.string().optional().openapi({
sort_by: z.string().nullish().openapi({
description: 'The field to sort by',
}),
sort_how: sortDirectionSchema.optional().openapi({
sort_how: sortDirectionSchema.nullish().openapi({
description: 'The direction to sort in',
enum: ['asc', 'desc'],
}),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { z } from '../z.ts';

export const statsQuerySchema = z.object({
include_stats: z.boolean().optional().openapi({
include_stats: z.boolean().nullish().openapi({
description: 'Whether to include stats in the response',
}),
});
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ export const commentResponseSchema = z.object({
review: z.boolean(),
replies: z.number().int(),
likes: z.number().int(),
user_rating: z.number().int().nullable(),
user_rating: z.number().int().nullish(),
user_stats: z.object({
rating: z.number().int().nullable(),
rating: z.number().int().nullish(),
play_count: z.number().int(),
completed_count: z.number().int(),
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import { streamingIdsResponseSchema } from './streamingIdsResponseSchema.ts';

export const episodeIdsResponseSchema = z.object({
trakt: z.number().int(),
tvdb: z.number().int().optional(),
imdb: z.string().nullable(),
tmdb: z.number().int().optional(),
tvdb: z.number().int().nullish(),
imdb: z.string().nullish(),
tmdb: z.number().int().nullish(),
/**
* Available if requesting extended `streaming_ids`.
*/
plex: streamingIdsResponseSchema.optional(),
plex: streamingIdsResponseSchema.nullish(),
});
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ export const episodeResponseSchema = z.object({
number: z.number().int(),
title: z.string(),
first_aired: z.string(),
number_abs: z.number().int().nullable(),
number_abs: z.number().int().nullish(),
/***
* Available if requesting extended `full`.
*/
rating: float(z.number()).optional(),
rating: float(z.number()).nullish(),
/***
* Available if requesting extended `full`.
*/
Expand All @@ -34,7 +34,7 @@ export const episodeResponseSchema = z.object({
/***
* Available if requesting extended `full`.
*/
overview: z.string().nullable(),
overview: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
Expand All @@ -48,14 +48,14 @@ export const episodeResponseSchema = z.object({
'season_finale',
'series_finale',
])
.optional(),
.nullish(),
ids: episodeIdsResponseSchema,
/***
* Available if requesting extended `images`.
*/
images: z
.object({ screenshot: z.array(z.string()) })
.optional(),
.nullish(),
/***
* Available if requesting extended `full`.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { z } from '../z.ts';

export const episodeTranslationResponseSchema = z.array(
z.object({
title: z.string().nullable(),
overview: z.string().nullable(),
title: z.string().nullish(),
overview: z.string().nullish(),
language: z.string(),
country: z.string(),
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ export const listMetadataResponseSchema = z.object({
rank: z.number().int(),
id: z.number().int(),
listed_at: z.string().datetime(),
notes: z.string().nullable(),
notes: z.string().nullish(),
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import { streamingIdsResponseSchema } from './streamingIdsResponseSchema.ts';
export const movieIdsResponseSchema = z.object({
trakt: z.number().int(),
slug: z.string(),
imdb: z.string().nullable(),
tmdb: z.number().int().optional(),
imdb: z.string().nullish(),
tmdb: z.number().int().nullish(),
/**
* Available if requesting extended `streaming_ids`.
*/
plex: streamingIdsResponseSchema.optional(),
plex: streamingIdsResponseSchema.nullish(),
});
Original file line number Diff line number Diff line change
Expand Up @@ -8,87 +8,87 @@ import { statusResponseSchema } from './statusResponseSchema.ts';

export const movieResponseSchema = z.object({
title: z.string(),
year: z.number().int().optional(),
year: z.number().int().nullish(),
ids: movieIdsResponseSchema,
/***
* Available if requesting extended `images`.
*/
images: imagesResponseSchema.optional(),
images: imagesResponseSchema.nullish(),

/***
* Available if requesting extended `full`.
*/
tagline: z.string().optional(),
tagline: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
overview: z.string().optional(),
overview: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
released: z.string().optional(),
released: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
runtime: z.number().int().optional(),
runtime: z.number().int().nullish(),
/***
* Available if requesting extended `full`.
*/
country: z.string().optional(),
country: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
status: statusResponseSchema.optional(),
status: statusResponseSchema.nullish(),
/***
* Available if requesting extended `full`.
*/
rating: float(z.number()).optional(),
rating: float(z.number()).nullish(),
/***
* Available if requesting extended `full`.
*/
votes: z.number().int().optional(),
votes: z.number().int().nullish(),
/***
* Available if requesting extended `full`.
*/
comment_count: z.number().int().optional(),
comment_count: z.number().int().nullish(),
/***
* Available if requesting extended `full`.
*/
trailer: z.string().optional(),
trailer: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
homepage: z.string().optional(),
homepage: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
updated_at: z.string().datetime().optional(),
updated_at: z.string().datetime().nullish(),
/***
* Available if requesting extended `full`.
*/
language: z.string().optional(),
language: z.string().nullish(),
/***
* Available if requesting extended `full`.
*/
languages: z.array(z.string()).optional(),
languages: z.array(z.string()).nullish(),
/***
* Available if requesting extended `full`.
*/
available_translations: z.array(z.string()).optional(),
available_translations: z.array(z.string()).nullish(),
/***
* Available if requesting extended `full`.
*/
genres: z.array(genreEnumSchema).optional(),
genres: z.array(genreEnumSchema).nullish(),
/***
* Available if requesting extended `full`.
*/
certification: movieCertificationResponseSchema.optional(),
certification: movieCertificationResponseSchema.nullish(),
/***
* Available if requesting extended `full`.
*/
original_title: z.string().nullish(),
/***
* Available if requesting extended `colors`.
*/
colors: mediaColorsResponseSchema.optional(),
colors: mediaColorsResponseSchema.nullish(),
});
Loading
Loading