mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 16:32:34 +09:00 
			
		
		
		
	feat(server): visibility column (#17939)
* feat: private view * pr feedback * sql generation * feat: visibility column * fix: set visibility value as the same as the still part after unlinked live photos * fix: test * pr feedback
This commit is contained in:
		@@ -12,6 +12,7 @@ import {
 | 
			
		||||
  IsArray,
 | 
			
		||||
  IsBoolean,
 | 
			
		||||
  IsDate,
 | 
			
		||||
  IsEnum,
 | 
			
		||||
  IsHexColor,
 | 
			
		||||
  IsNotEmpty,
 | 
			
		||||
  IsOptional,
 | 
			
		||||
@@ -29,6 +30,7 @@ import {
 | 
			
		||||
import { CronJob } from 'cron';
 | 
			
		||||
import { DateTime } from 'luxon';
 | 
			
		||||
import sanitize from 'sanitize-filename';
 | 
			
		||||
import { AssetVisibility } from 'src/enum';
 | 
			
		||||
import { isIP, isIPRange } from 'validator';
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
@@ -146,6 +148,17 @@ export const ValidateDate = (options?: DateOptions) => {
 | 
			
		||||
  return applyDecorators(...decorators);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
type AssetVisibilityOptions = { optional?: boolean };
 | 
			
		||||
export const ValidateAssetVisibility = (options?: AssetVisibilityOptions) => {
 | 
			
		||||
  const { optional } = { optional: false, ...options };
 | 
			
		||||
  const decorators = [IsEnum(AssetVisibility), ApiProperty({ enumName: 'AssetVisibility', enum: AssetVisibility })];
 | 
			
		||||
 | 
			
		||||
  if (optional) {
 | 
			
		||||
    decorators.push(Optional());
 | 
			
		||||
  }
 | 
			
		||||
  return applyDecorators(...decorators);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
type BooleanOptions = { optional?: boolean };
 | 
			
		||||
export const ValidateBoolean = (options?: BooleanOptions) => {
 | 
			
		||||
  const { optional } = { optional: false, ...options };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user