summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/FlashService.ts
diff options
context:
space:
mode:
authorおさむのひと <46447427+samunohito@users.noreply.github.com>2024-10-05 14:37:52 +0900
committerGitHub <noreply@github.com>2024-10-05 14:37:52 +0900
commit0d7d1091c8970d9979e8efb02f0accd6dcd39422 (patch)
treec76208e6b85a579f414a2fd7cac1bc1bb51f67ef /packages/backend/src/core/FlashService.ts
parent#14675 レビューの修正 (#14705) (diff)
downloadsharkey-0d7d1091c8970d9979e8efb02f0accd6dcd39422.tar.gz
sharkey-0d7d1091c8970d9979e8efb02f0accd6dcd39422.tar.bz2
sharkey-0d7d1091c8970d9979e8efb02f0accd6dcd39422.zip
enhance: 人気のPlayを10件以上表示できるように (#14443)
Co-authored-by: osamu <46447427+sam-osamu@users.noreply.github.com>
Diffstat (limited to 'packages/backend/src/core/FlashService.ts')
-rw-r--r--packages/backend/src/core/FlashService.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/backend/src/core/FlashService.ts b/packages/backend/src/core/FlashService.ts
new file mode 100644
index 0000000000..2a98225382
--- /dev/null
+++ b/packages/backend/src/core/FlashService.ts
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import { DI } from '@/di-symbols.js';
+import { type FlashsRepository } from '@/models/_.js';
+
+/**
+ * MisskeyPlay関係のService
+ */
+@Injectable()
+export class FlashService {
+ constructor(
+ @Inject(DI.flashsRepository)
+ private flashRepository: FlashsRepository,
+ ) {
+ }
+
+ /**
+ * 人気のあるPlay一覧を取得する.
+ */
+ public async featured(opts?: { offset?: number, limit: number }) {
+ const builder = this.flashRepository.createQueryBuilder('flash')
+ .andWhere('flash.likedCount > 0')
+ .andWhere('flash.visibility = :visibility', { visibility: 'public' })
+ .addOrderBy('flash.likedCount', 'DESC')
+ .addOrderBy('flash.updatedAt', 'DESC')
+ .addOrderBy('flash.id', 'DESC');
+
+ if (opts?.offset) {
+ builder.skip(opts.offset);
+ }
+
+ builder.take(opts?.limit ?? 10);
+
+ return await builder.getMany();
+ }
+}