fix(server): non-nullable IsOptional (#3939)

* custom `IsOptional`

* added link to source

* formatting

* Update server/src/domain/domain.util.ts

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>

* nullable birth date endpoint

* made `nullable` a property

* formatting

* removed unused dto

* updated decorator arg

* fixed album e2e tests

* add null tests for auth e2e

* add null test for person e2e

* fixed tests

* added null test for user e2e

* removed unusued import

* log key in test name

* chore: add note about mobile not being able to use the endpoint

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
This commit is contained in:
Mert
2023-09-01 12:40:00 -04:00
committed by GitHub
parent ca35e5557b
commit 9539a361e4
43 changed files with 271 additions and 243 deletions

View File

@@ -1,6 +1,6 @@
import { Transform } from 'class-transformer';
import { IsBoolean, IsEmail, IsNotEmpty, IsOptional, IsString } from 'class-validator';
import { toEmail, toSanitized } from '../../domain.util';
import { IsBoolean, IsEmail, IsNotEmpty, IsString } from 'class-validator';
import { toEmail, toSanitized, Optional } from '../../domain.util';
export class CreateUserDto {
@IsEmail({ require_tld: false })
@@ -19,16 +19,16 @@ export class CreateUserDto {
@IsString()
lastName!: string;
@IsOptional()
@Optional({ nullable: true })
@IsString()
@Transform(toSanitized)
storageLabel?: string | null;
@IsOptional()
@Optional({ nullable: true })
@IsString()
externalPath?: string | null;
@IsOptional()
@Optional()
@IsBoolean()
memoriesEnabled?: boolean;
}

View File

@@ -1,35 +1,35 @@
import { ApiProperty } from '@nestjs/swagger';
import { Transform } from 'class-transformer';
import { IsBoolean, IsEmail, IsNotEmpty, IsOptional, IsString, IsUUID } from 'class-validator';
import { toEmail, toSanitized } from '../../domain.util';
import { IsBoolean, IsEmail, IsNotEmpty, IsString, IsUUID } from 'class-validator';
import { toEmail, toSanitized, Optional } from '../../domain.util';
export class UpdateUserDto {
@IsOptional()
@Optional()
@IsEmail({ require_tld: false })
@Transform(toEmail)
email?: string;
@IsOptional()
@Optional()
@IsNotEmpty()
@IsString()
password?: string;
@IsOptional()
@Optional()
@IsString()
@IsNotEmpty()
firstName?: string;
@IsOptional()
@Optional()
@IsString()
@IsNotEmpty()
lastName?: string;
@IsOptional()
@Optional()
@IsString()
@Transform(toSanitized)
storageLabel?: string;
@IsOptional()
@Optional()
@IsString()
externalPath?: string;
@@ -38,15 +38,15 @@ export class UpdateUserDto {
@ApiProperty({ format: 'uuid' })
id!: string;
@IsOptional()
@Optional()
@IsBoolean()
isAdmin?: boolean;
@IsOptional()
@Optional()
@IsBoolean()
shouldChangePassword?: boolean;
@IsOptional()
@Optional()
@IsBoolean()
memoriesEnabled?: boolean;
}

View File

@@ -1,9 +1,10 @@
import { Optional } from '../../domain.util';
import { Transform } from 'class-transformer';
import { IsBoolean, IsOptional } from 'class-validator';
import { IsBoolean } from 'class-validator';
export class UserCountDto {
@IsBoolean()
@IsOptional()
@Optional()
@Transform(({ value }) => value === 'true')
/**
* When true, return the number of admins accounts