 c2370a1be6
			
		
	
	c2370a1be6
	
	
	
		
			
			* chore: Add the SPDX information to each file Add copyright and licensing information as defined in version 3.0 of the REUSE Specification. * tweak format --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /*
 | |
|  * SPDX-FileCopyrightText: syuilo and other misskey contributors
 | |
|  * SPDX-License-Identifier: AGPL-3.0-only
 | |
|  */
 | |
| 
 | |
| import { Inject, Injectable } from '@nestjs/common';
 | |
| import { Endpoint } from '@/server/api/endpoint-base.js';
 | |
| import type { FlashLikesRepository } from '@/models/index.js';
 | |
| import { QueryService } from '@/core/QueryService.js';
 | |
| import { FlashLikeEntityService } from '@/core/entities/FlashLikeEntityService.js';
 | |
| import { DI } from '@/di-symbols.js';
 | |
| 
 | |
| export const meta = {
 | |
| 	tags: ['account', 'flash'],
 | |
| 
 | |
| 	requireCredential: true,
 | |
| 
 | |
| 	kind: 'read:flash-likes',
 | |
| 
 | |
| 	res: {
 | |
| 		type: 'array',
 | |
| 		optional: false, nullable: false,
 | |
| 		items: {
 | |
| 			type: 'object',
 | |
| 			properties: {
 | |
| 				id: {
 | |
| 					type: 'string',
 | |
| 					optional: false, nullable: false,
 | |
| 					format: 'id',
 | |
| 				},
 | |
| 				flash: {
 | |
| 					type: 'object',
 | |
| 					optional: false, nullable: false,
 | |
| 					ref: 'Flash',
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	},
 | |
| } as const;
 | |
| 
 | |
| export const paramDef = {
 | |
| 	type: 'object',
 | |
| 	properties: {
 | |
| 		limit: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
 | |
| 		sinceId: { type: 'string', format: 'misskey:id' },
 | |
| 		untilId: { type: 'string', format: 'misskey:id' },
 | |
| 	},
 | |
| 	required: [],
 | |
| } as const;
 | |
| 
 | |
| // eslint-disable-next-line import/no-default-export
 | |
| @Injectable()
 | |
| export default class extends Endpoint<typeof meta, typeof paramDef> {
 | |
| 	constructor(
 | |
| 		@Inject(DI.flashLikesRepository)
 | |
| 		private flashLikesRepository: FlashLikesRepository,
 | |
| 
 | |
| 		private flashLikeEntityService: FlashLikeEntityService,
 | |
| 		private queryService: QueryService,
 | |
| 	) {
 | |
| 		super(meta, paramDef, async (ps, me) => {
 | |
| 			const query = this.queryService.makePaginationQuery(this.flashLikesRepository.createQueryBuilder('like'), ps.sinceId, ps.untilId)
 | |
| 				.andWhere('like.userId = :meId', { meId: me.id })
 | |
| 				.leftJoinAndSelect('like.flash', 'flash');
 | |
| 
 | |
| 			const likes = await query
 | |
| 				.limit(ps.limit)
 | |
| 				.getMany();
 | |
| 
 | |
| 			return this.flashLikeEntityService.packMany(likes, me);
 | |
| 		});
 | |
| 	}
 | |
| }
 |