feat: pending sync reset flag (#19861)

This commit is contained in:
Jason Rasmussen
2025-07-11 09:38:02 -04:00
committed by GitHub
parent 34f0f6c813
commit 4b3a4725c6
28 changed files with 499 additions and 27 deletions
+8 -1
View File
@@ -1,6 +1,6 @@
import { IsInt, IsPositive, IsString } from 'class-validator';
import { Session } from 'src/database';
import { Optional } from 'src/validation';
import { Optional, ValidateBoolean } from 'src/validation';
export class SessionCreateDto {
/**
@@ -20,6 +20,11 @@ export class SessionCreateDto {
deviceOS?: string;
}
export class SessionUpdateDto {
@ValidateBoolean({ optional: true })
isPendingSyncReset?: boolean;
}
export class SessionResponseDto {
id!: string;
createdAt!: string;
@@ -28,6 +33,7 @@ export class SessionResponseDto {
current!: boolean;
deviceType!: string;
deviceOS!: string;
isPendingSyncReset!: boolean;
}
export class SessionCreateResponseDto extends SessionResponseDto {
@@ -42,4 +48,5 @@ export const mapSession = (entity: Session, currentId?: string): SessionResponse
current: currentId === entity.id,
deviceOS: entity.deviceOS,
deviceType: entity.deviceType,
isPendingSyncReset: entity.isPendingSyncReset,
});
+8 -1
View File
@@ -11,7 +11,7 @@ import {
SyncEntityType,
SyncRequestType,
} from 'src/enum';
import { Optional, ValidateDate, ValidateUUID } from 'src/validation';
import { Optional, ValidateBoolean, ValidateDate, ValidateUUID } from 'src/validation';
export class AssetFullSyncDto {
@ValidateUUID({ optional: true })
@@ -256,6 +256,9 @@ export class SyncPersonDeleteV1 {
@ExtraModel()
export class SyncAckV1 {}
@ExtraModel()
export class SyncResetV1 {}
export type SyncItem = {
[SyncEntityType.UserV1]: SyncUserV1;
[SyncEntityType.UserDeleteV1]: SyncUserDeleteV1;
@@ -293,12 +296,16 @@ export type SyncItem = {
[SyncEntityType.PersonV1]: SyncPersonV1;
[SyncEntityType.PersonDeleteV1]: SyncPersonDeleteV1;
[SyncEntityType.SyncAckV1]: SyncAckV1;
[SyncEntityType.SyncResetV1]: SyncResetV1;
};
export class SyncStreamDto {
@IsEnum(SyncRequestType, { each: true })
@ApiProperty({ enumName: 'SyncRequestType', enum: SyncRequestType, isArray: true })
types!: SyncRequestType[];
@ValidateBoolean({ optional: true })
reset?: boolean;
}
export class SyncAckDto {