refactor: use a base dto class

This gives all dto classes a common super class for usage of the type system.

Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
Philip Molares 2022-02-13 22:57:08 +01:00 committed by David Mehren
parent 0955bf048d
commit c6bb8f62e8
20 changed files with 86 additions and 43 deletions

View file

@ -1,11 +1,13 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { IsDate, IsOptional, IsString } from 'class-validator'; import { IsDate, IsOptional, IsString } from 'class-validator';
export class AuthTokenDto { import { BaseDto } from '../utils/base.dto.';
export class AuthTokenDto extends BaseDto {
@IsString() @IsString()
label: string; label: string;
@IsString() @IsString()

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
@ -15,6 +15,7 @@ import {
import { URL } from 'url'; import { URL } from 'url';
import { ServerVersion } from '../monitoring/server-status.dto'; import { ServerVersion } from '../monitoring/server-status.dto';
import { BaseDto } from '../utils/base.dto.';
export enum AuthProviderType { export enum AuthProviderType {
LOCAL = 'local', LOCAL = 'local',
@ -43,7 +44,7 @@ export type AuthProviderTypeWithoutCustomName =
| AuthProviderType.DROPBOX | AuthProviderType.DROPBOX
| AuthProviderType.GOOGLE; | AuthProviderType.GOOGLE;
export class AuthProviderWithoutCustomNameDto { export class AuthProviderWithoutCustomNameDto extends BaseDto {
/** /**
* The type of the auth provider. * The type of the auth provider.
*/ */
@ -51,7 +52,7 @@ export class AuthProviderWithoutCustomNameDto {
type: AuthProviderTypeWithoutCustomName; type: AuthProviderTypeWithoutCustomName;
} }
export class AuthProviderWithCustomNameDto { export class AuthProviderWithCustomNameDto extends BaseDto {
/** /**
* The type of the auth provider. * The type of the auth provider.
*/ */
@ -77,7 +78,7 @@ export type AuthProviderDto =
| AuthProviderWithCustomNameDto | AuthProviderWithCustomNameDto
| AuthProviderWithoutCustomNameDto; | AuthProviderWithoutCustomNameDto;
export class BrandingDto { export class BrandingDto extends BaseDto {
/** /**
* The name to be displayed next to the HedgeDoc logo * The name to be displayed next to the HedgeDoc logo
* @example ACME Corp * @example ACME Corp
@ -95,7 +96,7 @@ export class BrandingDto {
logo?: URL; logo?: URL;
} }
export class SpecialUrlsDto { export class SpecialUrlsDto extends BaseDto {
/** /**
* A link to the privacy notice * A link to the privacy notice
* @example https://md.example.com/n/privacy * @example https://md.example.com/n/privacy
@ -121,7 +122,7 @@ export class SpecialUrlsDto {
imprint?: URL; imprint?: URL;
} }
export class IframeCommunicationDto { export class IframeCommunicationDto extends BaseDto {
/** /**
* The origin under which the editor page will be served * The origin under which the editor page will be served
* @example https://md.example.com * @example https://md.example.com
@ -139,7 +140,7 @@ export class IframeCommunicationDto {
rendererOrigin?: URL; rendererOrigin?: URL;
} }
export class FrontendConfigDto { export class FrontendConfigDto extends BaseDto {
/** /**
* Is anonymous usage of the instance allowed? * Is anonymous usage of the instance allowed?
*/ */

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsBoolean, IsString } from 'class-validator'; import { IsBoolean, IsString } from 'class-validator';
export class GroupInfoDto { import { BaseDto } from '../utils/base.dto.';
export class GroupInfoDto extends BaseDto {
/** /**
* Name of the group * Name of the group
* @example "superheroes" * @example "superheroes"

View file

@ -1,11 +1,13 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { IsBoolean, IsDate, IsString } from 'class-validator'; import { IsBoolean, IsDate, IsString } from 'class-validator';
export class HistoryEntryImportDto { import { BaseDto } from '../utils/base.dto.';
export class HistoryEntryImportDto extends BaseDto {
/** /**
* ID or Alias of the note * ID or Alias of the note
*/ */

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsBoolean } from 'class-validator'; import { IsBoolean } from 'class-validator';
export class HistoryEntryUpdateDto { import { BaseDto } from '../utils/base.dto.';
export class HistoryEntryUpdateDto extends BaseDto {
/** /**
* True if the note should be pinned * True if the note should be pinned
*/ */

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsArray, IsBoolean, IsDate, IsString } from 'class-validator'; import { IsArray, IsBoolean, IsDate, IsString } from 'class-validator';
export class HistoryEntryDto { import { BaseDto } from '../utils/base.dto.';
export class HistoryEntryDto extends BaseDto {
/** /**
* ID or Alias of the note * ID or Alias of the note
*/ */

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsString } from 'class-validator'; import { IsString } from 'class-validator';
export class MediaUploadUrlDto { import { BaseDto } from '../utils/base.dto.';
export class MediaUploadUrlDto extends BaseDto {
@IsString() @IsString()
@ApiProperty() @ApiProperty()
link: string; link: string;

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsDate, IsOptional, IsString } from 'class-validator'; import { IsDate, IsOptional, IsString } from 'class-validator';
export class MediaUploadDto { import { BaseDto } from '../utils/base.dto.';
export class MediaUploadDto extends BaseDto {
/** /**
* The link to the media file. * The link to the media file.
* @example "https://example.com/uploads/testfile123.jpg" * @example "https://example.com/uploads/testfile123.jpg"

View file

@ -1,10 +1,12 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { BaseDto } from '../utils/base.dto.';
export class ServerVersion { export class ServerVersion {
@ApiProperty() @ApiProperty()
major: number; major: number;
@ -18,7 +20,7 @@ export class ServerVersion {
commit?: string; commit?: string;
} }
export class ServerStatusDto { export class ServerStatusDto extends BaseDto {
@ApiProperty() @ApiProperty()
serverVersion: ServerVersion; serverVersion: ServerVersion;
@ApiProperty() @ApiProperty()

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsString } from 'class-validator'; import { IsString } from 'class-validator';
export class AliasCreateDto { import { BaseDto } from '../utils/base.dto.';
export class AliasCreateDto extends BaseDto {
/** /**
* The note id or alias, which identifies the note the alias should be added to * The note id or alias, which identifies the note the alias should be added to
*/ */

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsBoolean } from 'class-validator'; import { IsBoolean } from 'class-validator';
export class AliasUpdateDto { import { BaseDto } from '../utils/base.dto.';
export class AliasUpdateDto extends BaseDto {
/** /**
* Whether the alias should become the primary alias or not * Whether the alias should become the primary alias or not
*/ */

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsBoolean, IsString } from 'class-validator'; import { IsBoolean, IsString } from 'class-validator';
export class AliasDto { import { BaseDto } from '../utils/base.dto.';
export class AliasDto extends BaseDto {
/** /**
* The name of the alias * The name of the alias
*/ */

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
@ -14,9 +14,10 @@ import {
} from 'class-validator'; } from 'class-validator';
import { UserInfoDto } from '../users/user-info.dto'; import { UserInfoDto } from '../users/user-info.dto';
import { BaseDto } from '../utils/base.dto.';
import { NotePermissionsDto } from './note-permissions.dto'; import { NotePermissionsDto } from './note-permissions.dto';
export class NoteMetadataDto { export class NoteMetadataDto extends BaseDto {
/** /**
* ID of the note * ID of the note
*/ */

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
@ -12,7 +12,9 @@ import {
ValidateNested, ValidateNested,
} from 'class-validator'; } from 'class-validator';
export class NoteUserPermissionEntryDto { import { BaseDto } from '../utils/base.dto.';
export class NoteUserPermissionEntryDto extends BaseDto {
/** /**
* Username of the User this permission applies to * Username of the User this permission applies to
*/ */

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
@ -7,9 +7,10 @@ import { ApiProperty } from '@nestjs/swagger';
import { IsArray, IsString, ValidateNested } from 'class-validator'; import { IsArray, IsString, ValidateNested } from 'class-validator';
import { EditDto } from '../revisions/edit.dto'; import { EditDto } from '../revisions/edit.dto';
import { BaseDto } from '../utils/base.dto.';
import { NoteMetadataDto } from './note-metadata.dto'; import { NoteMetadataDto } from './note-metadata.dto';
export class NoteDto { export class NoteDto extends BaseDto {
/** /**
* Markdown content of the note * Markdown content of the note
* @example "# I am a heading" * @example "# I am a heading"

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsBoolean } from 'class-validator'; import { IsBoolean } from 'class-validator';
export class NoteMediaDeletionDto { import { BaseDto } from '../utils/base.dto.';
export class NoteMediaDeletionDto extends BaseDto {
/** /**
* Should the associated mediaUploads be keept * Should the associated mediaUploads be keept
* @default false * @default false

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
@ -7,8 +7,9 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsDate, IsNumber, IsOptional, IsString, Min } from 'class-validator'; import { IsDate, IsNumber, IsOptional, IsString, Min } from 'class-validator';
import { UserInfoDto } from '../users/user-info.dto'; import { UserInfoDto } from '../users/user-info.dto';
import { BaseDto } from '../utils/base.dto.';
export class EditDto { export class EditDto extends BaseDto {
/** /**
* Username of the user who authored this section * Username of the user who authored this section
* Is `null` if the user is anonymous * Is `null` if the user is anonymous

View file

@ -1,14 +1,15 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsDate, IsNumber, IsString } from 'class-validator'; import { IsDate, IsNumber, IsString } from 'class-validator';
import { BaseDto } from '../utils/base.dto.';
import { Revision } from './revision.entity'; import { Revision } from './revision.entity';
export class RevisionDto { export class RevisionDto extends BaseDto {
/** /**
* ID of this revision * ID of this revision
* @example 13 * @example 13

View file

@ -1,12 +1,14 @@
/* /*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* *
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
import { IsString } from 'class-validator'; import { IsString } from 'class-validator';
export class UserInfoDto { import { BaseDto } from '../utils/base.dto.';
export class UserInfoDto extends BaseDto {
/** /**
* The username * The username
* @example "john.smith" * @example "john.smith"

10
src/utils/base.dto..ts Normal file
View file

@ -0,0 +1,10 @@
/*
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
/**
* The base class for all DTOs.
*/
export abstract class BaseDto {}