summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/UserService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-10-03 20:26:11 +0900
committerGitHub <noreply@github.com>2023-10-03 20:26:11 +0900
commit6277a5545c746fac15ee6b4fe58de2e354ed7fda (patch)
tree700b0d162795f03d644a15ba2375628d66f95d92 /packages/backend/src/core/UserService.ts
parentUpdate about-misskey.vue (diff)
downloadsharkey-6277a5545c746fac15ee6b4fe58de2e354ed7fda.tar.gz
sharkey-6277a5545c746fac15ee6b4fe58de2e354ed7fda.tar.bz2
sharkey-6277a5545c746fac15ee6b4fe58de2e354ed7fda.zip
feat: improve tl performance (#11946)
* wip * wip * wip * wip * wip * wip * Update NoteCreateService.ts * wip * wip * wip * wip * Update NoteCreateService.ts * wip * Update NoteCreateService.ts * wip * Update user-notes.ts * wip * wip * wip * Update NoteCreateService.ts * wip * Update timeline.ts * Update timeline.ts * Update timeline.ts * Update timeline.ts * Update timeline.ts * wip * Update timelines.ts * Update timelines.ts * Update timelines.ts * wip * wip * wip * Update timelines.ts * Update misskey-js.api.md * Update timelines.ts * Update timelines.ts * wip * wip * wip * Update timelines.ts * wip * Update timelines.ts * wip * test * Update activitypub.ts * refactor: UserListJoining -> UserListMembership * Update NoteCreateService.ts * wip
Diffstat (limited to 'packages/backend/src/core/UserService.ts')
-rw-r--r--packages/backend/src/core/UserService.ts53
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/backend/src/core/UserService.ts b/packages/backend/src/core/UserService.ts
new file mode 100644
index 0000000000..d16e1be615
--- /dev/null
+++ b/packages/backend/src/core/UserService.ts
@@ -0,0 +1,53 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import type { FollowingsRepository, UsersRepository } from '@/models/_.js';
+import type { MiUser } from '@/models/User.js';
+import { DI } from '@/di-symbols.js';
+import { bindThis } from '@/decorators.js';
+
+@Injectable()
+export class UserService {
+ constructor(
+ @Inject(DI.usersRepository)
+ private usersRepository: UsersRepository,
+
+ @Inject(DI.followingsRepository)
+ private followingsRepository: FollowingsRepository,
+ ) {
+ }
+
+ @bindThis
+ public async updateLastActiveDate(user: MiUser): Promise<void> {
+ if (user.isHibernated) {
+ const result = await this.usersRepository.createQueryBuilder().update()
+ .set({
+ lastActiveDate: new Date(),
+ })
+ .where('id = :id', { id: user.id })
+ .returning('*')
+ .execute()
+ .then((response) => {
+ return response.raw[0];
+ });
+ const wokeUp = result.isHibernated;
+ if (wokeUp) {
+ this.usersRepository.update(user.id, {
+ isHibernated: false,
+ });
+ this.followingsRepository.update({
+ followerId: user.id,
+ }, {
+ isFollowerHibernated: false,
+ });
+ }
+ } else {
+ this.usersRepository.update(user.id, {
+ lastActiveDate: new Date(),
+ });
+ }
+ }
+}