diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-10-03 20:26:11 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-03 20:26:11 +0900 |
| commit | 6277a5545c746fac15ee6b4fe58de2e354ed7fda (patch) | |
| tree | 700b0d162795f03d644a15ba2375628d66f95d92 /packages/backend/src/core/UserService.ts | |
| parent | Update about-misskey.vue (diff) | |
| download | sharkey-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.ts | 53 |
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(), + }); + } + } +} |