mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-10-31 02:27:11 -04:00 
			
		
		
		
	v5 api: Random sort query parameter cannot be reversed
This commit is contained in:
		
							parent
							
								
									2afccaa813
								
							
						
					
					
						commit
						67ea86a955
					
				| @ -177,11 +177,7 @@ export const movies = new Elysia({ prefix: "/movies", tags: ["movies"] }) | ||||
| 				.where(and(filter, keysetPaginate({ table: shows, after, sort }))) | ||||
| 				.orderBy( | ||||
| 					...(sort.random !== undefined | ||||
| 						? [ | ||||
| 								sort.random.desc | ||||
| 									? sql`md5(${sort.random.seed} || ${shows.pk}) desc` | ||||
| 									: sql`md5(${sort.random.seed} || ${shows.pk})`, | ||||
| 							] | ||||
| 						? [sql`md5(${sort.random.seed} || ${shows.pk})`] | ||||
| 						: []), | ||||
| 					...sort.sort.map((x) => | ||||
| 						x.desc ? sql`${shows[x.key]} desc nulls last` : shows[x.key], | ||||
|  | ||||
| @ -9,7 +9,7 @@ export type Sort< | ||||
| 		remmapedKey?: keyof Remap; | ||||
| 		desc: boolean; | ||||
| 	}[]; | ||||
| 	random?: { desc: boolean; seed: number }; | ||||
| 	random?: { seed: number }; | ||||
| }; | ||||
| 
 | ||||
| export type NonEmptyArray<T> = [T, ...T[]]; | ||||
| @ -33,14 +33,12 @@ export const Sort = < | ||||
| 		.Transform( | ||||
| 			t.Array( | ||||
| 				t.Union([ | ||||
| 					t.Literal("random"), | ||||
| 					t.TemplateLiteral("random:${number}"), | ||||
| 					t.UnionEnum([ | ||||
| 						...values, | ||||
| 						...values.map((x: T[number]) => `-${x}` as const), | ||||
| 					]), | ||||
| 					t.Union([ | ||||
| 						t.TemplateLiteral("random:${number}"), | ||||
| 						t.TemplateLiteral("-random:${number}"), | ||||
| 					]), | ||||
| 				]), | ||||
| 				{ | ||||
| 					// TODO: support explode: true (allow sort=slug,-createdAt). needs a pr to elysia
 | ||||
| @ -59,14 +57,12 @@ export const Sort = < | ||||
| 				if (key == "random") { | ||||
| 					random = { | ||||
| 						seed: Math.floor(Math.random() * Number.MAX_SAFE_INTEGER), | ||||
| 						desc, | ||||
| 					}; | ||||
| 					continue; | ||||
| 				} else if (key.startsWith("random:")) { | ||||
| 					const strSeed = key.replace("random:", ""); | ||||
| 					random = { | ||||
| 						seed: parseInt(strSeed), | ||||
| 						desc, | ||||
| 					}; | ||||
| 					continue; | ||||
| 				} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user