1
0
mirror of https://github.com/immich-app/immich.git synced 2024-11-28 09:33:27 +02:00

feat(server) Add filetype variable to storage template (#1337)

* feat(server) Add filetype variable to storage template

* Remove console.log

* Added additional variable for full file type
This commit is contained in:
Alex 2023-01-16 15:54:52 -06:00 committed by GitHub
parent 1e1fd97b38
commit 0c582df962
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 5 deletions

View File

@ -1,5 +1,5 @@
import { APP_UPLOAD_LOCATION } from '@app/common'; import { APP_UPLOAD_LOCATION } from '@app/common';
import { AssetEntity, SystemConfig } from '@app/infra'; import { AssetEntity, AssetType, SystemConfig } from '@app/infra';
import { ImmichConfigService, INITIAL_SYSTEM_CONFIG } from '@app/immich-config'; import { ImmichConfigService, INITIAL_SYSTEM_CONFIG } from '@app/immich-config';
import { Inject, Injectable, Logger } from '@nestjs/common'; import { Inject, Injectable, Logger } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
@ -128,19 +128,19 @@ export class StorageService {
private validateStorageTemplate(templateString: string) { private validateStorageTemplate(templateString: string) {
try { try {
const template = this.compile(templateString); const template = this.compile(templateString);
// test render an asset // test render an asset
this.render( this.render(
template, template,
{ {
createdAt: new Date().toISOString(), createdAt: new Date().toISOString(),
originalPath: '/upload/test/IMG_123.jpg', originalPath: '/upload/test/IMG_123.jpg',
type: AssetType.IMAGE,
} as AssetEntity, } as AssetEntity,
'IMG_123', 'IMG_123',
'jpg', 'jpg',
); );
} catch (e) { } catch (e) {
this.logger.warn(`Storage template validation failed: ${e}`); this.logger.warn(`Storage template validation failed: ${JSON.stringify(e)}`);
throw new Error(`Invalid storage template: ${e}`); throw new Error(`Invalid storage template: ${e}`);
} }
} }
@ -158,6 +158,9 @@ export class StorageService {
ext, ext,
}; };
const fileType = asset.type == AssetType.IMAGE ? 'IMG' : 'VID';
const fileTypeFull = asset.type == AssetType.IMAGE ? 'IMAGE' : 'VIDEO';
const dt = luxon.DateTime.fromISO(new Date(asset.createdAt).toISOString()); const dt = luxon.DateTime.fromISO(new Date(asset.createdAt).toISOString());
const dateTokens = [ const dateTokens = [
@ -173,6 +176,10 @@ export class StorageService {
substitutions[token] = dt.toFormat(token); substitutions[token] = dt.toFormat(token);
} }
// Support file type token
substitutions.filetype = fileType;
substitutions.filetypefull = fileTypeFull;
return template(substitutions); return template(substitutions);
} }

View File

@ -56,8 +56,10 @@
}); });
const substitutions: Record<string, string> = { const substitutions: Record<string, string> = {
filename: 'IMG_10041123', filename: 'IMAGE_56437',
ext: 'jpeg' ext: 'jpeg',
filetype: 'IMG',
filetypefull: 'IMAGE'
}; };
const dt = luxon.DateTime.fromISO(new Date('2022-09-04T20:03:05.250').toISOString()); const dt = luxon.DateTime.fromISO(new Date('2022-09-04T20:03:05.250').toISOString());

View File

@ -17,5 +17,13 @@
<li>{`{{ext}}`}</li> <li>{`{{ext}}`}</li>
</ul> </ul>
</div> </div>
<div>
<p class="text-immich-primary font-medium dark:text-immich-dark-primary">FILE TYPE</p>
<ul>
<li>{`{{filetype}}`} - VID or IMG</li>
<li>{`{{filetypefull}}`} - VIDEO or IMAGE</li>
</ul>
</div>
</div> </div>
</div> </div>