WIP AD DTO

This commit is contained in:
Grégoire Chevalier 2023-05-10 17:05:29 +02:00
parent b83baef1ee
commit 362452fc10
5 changed files with 92 additions and 24 deletions

View File

@ -26,7 +26,7 @@ message Ad {
MarginDurations marginDurations = 9; MarginDurations marginDurations = 9;
optional int32 seatsPassenger = 10; optional int32 seatsPassenger = 10;
optional int32 seatsDriver = 11; optional int32 seatsDriver = 11;
bool strict = 12; optional bool strict = 12;
repeated Address addresses = 13; repeated Address addresses = 13;
} }
@ -51,14 +51,15 @@ message MarginDurations {
} }
message Address { message Address {
float lon = 1; int32 position =1;
float lat = 2; float lon = 2;
string houseNumber = 3; float lat = 3;
string street = 4; string houseNumber = 4;
string locality = 5; string street = 5;
string postalCode = 6; string locality = 6;
string country = 7; string postalCode = 7;
AddressType type = 8; string country = 8;
AddressType type = 9;
} }
enum AddressType { enum AddressType {

View File

@ -8,10 +8,12 @@ import {
ValidateIf, ValidateIf,
IsArray, IsArray,
IsEnum, IsEnum,
IsNumber,
ValidateNested,
} from 'class-validator'; } from 'class-validator';
import { Frequency } from '../entities/frequency.enum'; import { Frequency } from '../entities/frequency.enum';
import { Address } from '../entities/address';
import { Transform, Type } from 'class-transformer'; import { Transform, Type } from 'class-transformer';
import { AddressType } from '../entities/address.enum';
export class CreateAdRequest { export class CreateAdRequest {
@IsString() @IsString()
@ -35,10 +37,7 @@ export class CreateAdRequest {
@AutoMap() @AutoMap()
passenger?: boolean; passenger?: boolean;
@Transform( @Transform(({ value }) => Frequency[value], { toClassOnly: true })
({ value }) => (value == 1 ? Frequency.PUNCTUAL : Frequency.RECURRENT),
{ toClassOnly: true },
)
@IsEnum(Frequency) @IsEnum(Frequency)
@AutoMap() @AutoMap()
frequency: Frequency; frequency: Frequency;
@ -130,22 +129,87 @@ export class CreateAdRequest {
seatsDriver?: number; seatsDriver?: number;
@ValidateIf((ad) => (ad.driver ? false : true)) @ValidateIf((ad) => (ad.driver ? false : true))
//@Transform(({ value }) => (value ? value : 0), { toClassOnly: true })
@IsOptional() @IsOptional()
@IsInt() @IsInt()
@AutoMap() @AutoMap()
seatsPassenger?: number; seatsPassenger?: number;
@IsOptional()
@IsBoolean()
@AutoMap()
strict?: boolean;
@Type(() => Date) @Type(() => Date)
@IsDate() @IsDate()
@IsOptional() @IsOptional()
@AutoMap() @AutoMap()
createdAt?: Date; createdAt?: Date;
@Type(() => Date) @Type(() => Date)
@IsDate() @IsDate()
@IsOptional() @IsOptional()
@AutoMap() @AutoMap()
updatedAt?: Date; updatedAt?: Date;
@IsArray() @ValidateNested({ each: true })
@AutoMap(() => [Address]) @Transform(
addresses?: Array<Address>; ({ value }) => {
console.log('in dto');
console.log(value);
return value;
},
{ toClassOnly: true },
)
@Type(() => AddressDTO)
@AutoMap(() => [AddressDTO])
addresses: AddressDTO[];
}
class AddressDTO {
@IsNumber()
@AutoMap()
position: number;
@IsNumber()
@AutoMap()
lon: number;
@IsNumber()
@AutoMap()
lat: number;
@IsString()
@IsOptional()
@AutoMap()
name?: string;
@IsString()
@IsOptional()
@AutoMap()
houseNumber?: string;
@IsString()
@IsOptional()
@AutoMap()
street?: string;
@IsString()
@IsOptional()
@AutoMap()
locality: string;
@IsString()
@IsOptional()
@AutoMap()
postalCode: string;
@IsString()
@IsOptional()
@AutoMap()
country: string;
@Transform(({ value }) => AddressType[value], { toClassOnly: true })
@AutoMap()
type: AddressType;
} }

View File

@ -1,7 +1,7 @@
export enum AddressType { export enum AddressType {
HOUSE_NUMBER = 'HOUSE_NUMBER', HOUSE_NUMBER = 1,
STREET_ADDRESS = 'STREET_ADDRESS', STREET_ADDRESS,
LOCALITY = 'LOCALITY', LOCALITY,
VENUE = 'VENUE', VENUE,
OTHER = 'OTHER', OTHER,
} }

View File

@ -14,6 +14,9 @@ export class Address {
@AutoMap() @AutoMap()
lat: number; lat: number;
@AutoMap()
name?: string;
@AutoMap() @AutoMap()
houseNumber?: string; houseNumber?: string;

View File

@ -1,4 +1,4 @@
export enum Frequency { export enum Frequency {
PUNCTUAL = 'PUNCTUAL', PUNCTUAL = 1,
RECURRENT = 'RECURRENT', RECURRENT,
} }