mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-11-03 19:17:16 -05:00 
			
		
		
		
	Add /collections/:id/shows
This commit is contained in:
		
							parent
							
								
									68d4958e3a
								
							
						
					
					
						commit
						4f73e76a34
					
				@ -332,4 +332,81 @@ export const collections = new Elysia({
 | 
				
			|||||||
				422: KError,
 | 
									422: KError,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						.get(
 | 
				
			||||||
 | 
							"/:id/shows",
 | 
				
			||||||
 | 
							async ({
 | 
				
			||||||
 | 
								params: { id },
 | 
				
			||||||
 | 
								query: { limit, after, query, sort, filter, preferOriginal },
 | 
				
			||||||
 | 
								headers: { "accept-language": languages },
 | 
				
			||||||
 | 
								request: { url },
 | 
				
			||||||
 | 
								error,
 | 
				
			||||||
 | 
							}) => {
 | 
				
			||||||
 | 
								const [collection] = await db
 | 
				
			||||||
 | 
									.select({ pk: shows.pk })
 | 
				
			||||||
 | 
									.from(shows)
 | 
				
			||||||
 | 
									.where(
 | 
				
			||||||
 | 
										and(
 | 
				
			||||||
 | 
											eq(shows.kind, "collection"),
 | 
				
			||||||
 | 
											isUuid(id) ? eq(shows.id, id) : eq(shows.slug, id),
 | 
				
			||||||
 | 
										),
 | 
				
			||||||
 | 
									)
 | 
				
			||||||
 | 
									.limit(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (!collection) {
 | 
				
			||||||
 | 
									return error(404, {
 | 
				
			||||||
 | 
										status: 404,
 | 
				
			||||||
 | 
										message: `No collection with the id or slug: '${id}'.`,
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								const langs = processLanguages(languages);
 | 
				
			||||||
 | 
								const items = await getShows({
 | 
				
			||||||
 | 
									limit,
 | 
				
			||||||
 | 
									after,
 | 
				
			||||||
 | 
									query,
 | 
				
			||||||
 | 
									sort,
 | 
				
			||||||
 | 
									filter: and(eq(shows.collectionPk, collection.pk), filter),
 | 
				
			||||||
 | 
									languages: langs,
 | 
				
			||||||
 | 
									preferOriginal,
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
								return createPage(items, { url, sort, limit });
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								detail: { description: "Get all series & movies in a collection" },
 | 
				
			||||||
 | 
								params: t.Object({
 | 
				
			||||||
 | 
									id: t.String({
 | 
				
			||||||
 | 
										description: "The id or slug of the collection.",
 | 
				
			||||||
 | 
										example: duneCollection.slug,
 | 
				
			||||||
 | 
									}),
 | 
				
			||||||
 | 
								}),
 | 
				
			||||||
 | 
								query: t.Object({
 | 
				
			||||||
 | 
									sort: showSort,
 | 
				
			||||||
 | 
									filter: t.Optional(Filter({ def: showFilters })),
 | 
				
			||||||
 | 
									query: t.Optional(t.String({ description: desc.query })),
 | 
				
			||||||
 | 
									limit: t.Integer({
 | 
				
			||||||
 | 
										minimum: 1,
 | 
				
			||||||
 | 
										maximum: 250,
 | 
				
			||||||
 | 
										default: 50,
 | 
				
			||||||
 | 
										description: "Max page size.",
 | 
				
			||||||
 | 
									}),
 | 
				
			||||||
 | 
									after: t.Optional(t.String({ description: desc.after })),
 | 
				
			||||||
 | 
									preferOriginal: t.Optional(
 | 
				
			||||||
 | 
										t.Boolean({
 | 
				
			||||||
 | 
											description: desc.preferOriginal,
 | 
				
			||||||
 | 
										}),
 | 
				
			||||||
 | 
									),
 | 
				
			||||||
 | 
								}),
 | 
				
			||||||
 | 
								headers: t.Object({
 | 
				
			||||||
 | 
									"accept-language": AcceptLanguage({ autoFallback: true }),
 | 
				
			||||||
 | 
								}),
 | 
				
			||||||
 | 
								response: {
 | 
				
			||||||
 | 
									200: Page(Movie),
 | 
				
			||||||
 | 
									404: {
 | 
				
			||||||
 | 
										...KError,
 | 
				
			||||||
 | 
										description: "No collection found with the given id or slug.",
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									422: KError,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	);
 | 
						);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user