summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/GetterService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-24 07:15:16 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-09-24 07:15:16 +0900
commit614b11951b6116a6485bee85126858189ecaa681 (patch)
tree60a7a2b2bce632dba294036058a6c608fe32b9d6 /packages/backend/src/server/api/GetterService.ts
parentremove unused files (diff)
downloadsharkey-614b11951b6116a6485bee85126858189ecaa681.tar.gz
sharkey-614b11951b6116a6485bee85126858189ecaa681.tar.bz2
sharkey-614b11951b6116a6485bee85126858189ecaa681.zip
refactor
Diffstat (limited to 'packages/backend/src/server/api/GetterService.ts')
-rw-r--r--packages/backend/src/server/api/GetterService.ts74
1 files changed, 74 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/GetterService.ts b/packages/backend/src/server/api/GetterService.ts
new file mode 100644
index 0000000000..70ab46ec35
--- /dev/null
+++ b/packages/backend/src/server/api/GetterService.ts
@@ -0,0 +1,74 @@
+import { Inject, Injectable } from '@nestjs/common';
+import { DI } from '@/di-symbols.js';
+import type { NotesRepository, UsersRepository } from '@/models/index.js';
+import { IdentifiableError } from '@/misc/identifiable-error.js';
+import type { User } from '@/models/entities/User.js';
+import type { Note } from '@/models/entities/Note.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
+
+@Injectable()
+export class GetterService {
+ constructor(
+ @Inject(DI.usersRepository)
+ private usersRepository: UsersRepository,
+
+ @Inject(DI.notesRepository)
+ private notesRepository: NotesRepository,
+
+ private userEntityService: UserEntityService,
+ ) {
+ }
+
+ /**
+ * Get note for API processing
+ */
+ public async getNote(noteId: Note['id']) {
+ const note = await this.notesRepository.findOneBy({ id: noteId });
+
+ if (note == null) {
+ throw new IdentifiableError('9725d0ce-ba28-4dde-95a7-2cbb2c15de24', 'No such note.');
+ }
+
+ return note;
+ }
+
+ /**
+ * Get user for API processing
+ */
+ public async getUser(userId: User['id']) {
+ const user = await this.usersRepository.findOneBy({ id: userId });
+
+ if (user == null) {
+ throw new IdentifiableError('15348ddd-432d-49c2-8a5a-8069753becff', 'No such user.');
+ }
+
+ return user;
+ }
+
+ /**
+ * Get remote user for API processing
+ */
+ public async getRemoteUser(userId: User['id']) {
+ const user = await this.getUser(userId);
+
+ if (!this.userEntityService.isRemoteUser(user)) {
+ throw new Error('user is not a remote user');
+ }
+
+ return user;
+ }
+
+ /**
+ * Get local user for API processing
+ */
+ public async getLocalUser(userId: User['id']) {
+ const user = await this.getUser(userId);
+
+ if (!this.userEntityService.isLocalUser(user)) {
+ throw new Error('user is not a local user');
+ }
+
+ return user;
+ }
+}
+