From 9cae7e34dc29243e32ecc486e50edeab16ff08cb Mon Sep 17 00:00:00 2001 From: David Mehren Date: Sat, 19 Sep 2020 17:40:50 +0200 Subject: [PATCH] NotesService: Get more note metadata from the database Some previously hardcoded metadata-values are now retrieved from the database. Signed-off-by: David Mehren --- src/notes/notes.module.ts | 8 +++++- src/notes/notes.service.ts | 52 +++++++++++++++++++++++--------------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/src/notes/notes.module.ts b/src/notes/notes.module.ts index 1054935d3..a06575138 100644 --- a/src/notes/notes.module.ts +++ b/src/notes/notes.module.ts @@ -1,11 +1,17 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; +import { RevisionsModule } from '../revisions/revisions.module'; +import { UsersModule } from '../users/users.module'; import { AuthorColor } from './author-color.entity'; import { Note } from './note.entity'; import { NotesService } from './notes.service'; @Module({ - imports: [TypeOrmModule.forFeature([Note, AuthorColor])], + imports: [ + TypeOrmModule.forFeature([Note, AuthorColor]), + RevisionsModule, + UsersModule, + ], controllers: [], providers: [NotesService], exports: [NotesService], diff --git a/src/notes/notes.service.ts b/src/notes/notes.service.ts index daa4f6280..ab283137c 100644 --- a/src/notes/notes.service.ts +++ b/src/notes/notes.service.ts @@ -1,8 +1,9 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Inject, Injectable, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Revision } from '../revisions/revision.entity'; import { User } from '../users/user.entity'; +import { UsersService } from '../users/users.service'; import { NoteMetadataDto } from './note-metadata.dto'; import { NotePermissionsDto, @@ -10,6 +11,7 @@ import { } from './note-permissions.dto'; import { NoteDto } from './note.dto'; import { Note } from './note.entity'; +import { NoteUtils } from './note.utils'; @Injectable() export class NotesService { @@ -17,6 +19,7 @@ export class NotesService { constructor( @InjectRepository(Note) private noteRepository: Repository, + @Inject(UsersService) private usersService: UsersService, ) {} getUserNotes(username: string): NoteMetadataDto[] { @@ -75,32 +78,41 @@ export class NotesService { } getCurrentContent(note: Note) { - return note.revisions[note.revisions.length - 1].content; + return this.getLastRevision(note).content; } - getMetadata(note: Note) { + getLastRevision(note: Note) { + return note.revisions[note.revisions.length - 1]; + } + + getMetadata(note: Note): NoteMetadataDto { return { - alias: note.alias, - createTime: new Date(), - description: 'Very descriptive text.', - editedBy: [], + // TODO: Convert DB UUID to base64 id: note.id, + alias: note.alias, + title: NoteUtils.parseTitle(note), + // TODO: Get actual createTime + createTime: new Date(), + description: NoteUtils.parseDescription(note), + editedBy: note.authorColors.map(authorColor => authorColor.user.userName), + // TODO: Extract into method permission: { - owner: { - displayName: 'foo', - userName: 'fooUser', - email: 'foo@example.com', - photo: '', - }, - sharedToUsers: [], - sharedToGroups: [], + owner: this.usersService.toUserDto(note.owner), + sharedToUsers: note.userPermissions.map(noteUserPermission => ({ + user: this.usersService.toUserDto(noteUserPermission.user), + canEdit: noteUserPermission.canEdit, + })), + sharedToGroups: note.groupPermissions.map(noteGroupPermission => ({ + group: noteGroupPermission.group, + canEdit: noteGroupPermission.canEdit, + })), }, - tags: [], - title: 'Title!', - updateTime: new Date(), + tags: NoteUtils.parseTags(note), + updateTime: this.getLastRevision(note).createdAt, + // TODO: Get actual updateUser updateUser: { - displayName: 'foo', - userName: 'fooUser', + displayName: 'Hardcoded User', + userName: 'hardcoded', email: 'foo@example.com', photo: '', },