GroupsService: Create new GroupsService

This service is necessary as we plan to have functions to create and manipulate groups in the future.
The GroupInfoDto was moved from the file note-permissions.dto.ts to mimic the UserInfoDto.

Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
Philip Molares 2021-02-20 11:41:15 +01:00
parent 577811be29
commit 34087561e7
16 changed files with 220 additions and 38 deletions

View file

@ -6,6 +6,7 @@
import { IsArray, IsBoolean, IsString, ValidateNested } from 'class-validator';
import { UserInfoDto } from '../users/user-info.dto';
import { GroupInfoDto } from '../groups/group-info.dto';
export class NoteUserPermissionEntryDto {
/**
@ -38,30 +39,6 @@ export class NoteUserPermissionUpdateDto {
canEdit: boolean;
}
export class GroupInfoDto {
/**
* Name of the group
* @example "superheroes"
*/
@IsString()
name: string;
/**
* Display name of this group
* @example "Superheroes"
*/
@IsString()
displayName: string;
/**
* True if this group must be specially handled
* Used for e.g. "everybody", "all logged in users"
* @example false
*/
@IsBoolean()
special: boolean;
}
export class NoteGroupPermissionEntryDto {
/**
* Group this permission applies to

View file

@ -15,6 +15,7 @@ import { NotesService } from './notes.service';
import { Tag } from './tag.entity';
import { NoteGroupPermission } from '../permissions/note-group-permission.entity';
import { NoteUserPermission } from '../permissions/note-user-permission.entity';
import { GroupsModule } from '../groups/groups.module';
@Module({
imports: [
@ -27,6 +28,7 @@ import { NoteUserPermission } from '../permissions/note-user-permission.entity';
]),
forwardRef(() => RevisionsModule),
UsersModule,
GroupsModule,
LoggerModule,
],
controllers: [],

View file

@ -17,9 +17,12 @@ import { UsersModule } from '../users/users.module';
import { AuthorColor } from './author-color.entity';
import { Note } from './note.entity';
import { NotesService } from './notes.service';
import { Repository } from 'typeorm';
import { Tag } from './tag.entity';
import { NoteGroupPermission } from '../permissions/note-group-permission.entity';
import { NoteUserPermission } from '../permissions/note-user-permission.entity';
import { GroupsModule } from '../groups/groups.module';
import { Group } from '../groups/group.entity';
describe('NotesService', () => {
let service: NotesService;
@ -37,7 +40,7 @@ describe('NotesService', () => {
useValue: {},
},
],
imports: [UsersModule, RevisionsModule, LoggerModule],
imports: [LoggerModule, UsersModule, GroupsModule, RevisionsModule],
})
.overrideProvider(getRepositoryToken(User))
.useValue({})
@ -59,7 +62,10 @@ describe('NotesService', () => {
.useValue({})
.overrideProvider(getRepositoryToken(NoteUserPermission))
.useValue({})
.overrideProvider(getRepositoryToken(Group))
.useClass(Repository)
.compile();
service = module.get<NotesService>(NotesService);
});

View file

@ -22,6 +22,9 @@ import { NoteDto } from './note.dto';
import { Note } from './note.entity';
import { Tag } from './tag.entity';
import { HistoryEntry } from '../history/history-entry.entity';
import { NoteUserPermission } from '../permissions/note-user-permission.entity';
import { NoteGroupPermission } from '../permissions/note-group-permission.entity';
import { GroupsService } from '../groups/groups.service';
@Injectable()
export class NotesService {
@ -30,6 +33,7 @@ export class NotesService {
@InjectRepository(Note) private noteRepository: Repository<Note>,
@InjectRepository(Tag) private tagRepository: Repository<Tag>,
@Inject(UsersService) private usersService: UsersService,
@Inject(GroupsService) private groupsService: GroupsService,
@Inject(forwardRef(() => RevisionsService))
private revisionsService: RevisionsService,
) {