feat(attachments): base config for attachment management.
This commit is contained in:
parent
45386ac4bf
commit
9d3967c5c7
10
src/config/attachment.config.ts
Normal file
10
src/config/attachment.config.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { join } from "path";
|
||||||
|
|
||||||
|
export function resolveAttachmentsRoot() {
|
||||||
|
const explicit = process.env.ATTACHMENTS_ROOT?.trim();
|
||||||
|
if (explicit) return explicit; //direct filepath if possible
|
||||||
|
|
||||||
|
const id = (process.env.ATTACHMENTS_SERVER_ID ?? 'server').trim();
|
||||||
|
return process.platform === 'win32' ? `\\\\${id}\\attachments` : `/mnt/attachments`; //check if server is using windows or linux
|
||||||
|
}
|
||||||
|
export const ATT_TMP_DIR = () => join(resolveAttachmentsRoot(), '_tmp');
|
||||||
10
src/config/attachment.fs.ts
Normal file
10
src/config/attachment.fs.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { promises as fs } from "node:fs";
|
||||||
|
import { ATT_TMP_DIR } from "./attachment.config";
|
||||||
|
|
||||||
|
export async function ensureAttachmentsTmpDir() {
|
||||||
|
const tmp = ATT_TMP_DIR(); //<ROOT>/_tmp
|
||||||
|
await fs.mkdir(tmp, { recursive: true }); // create if missing
|
||||||
|
|
||||||
|
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
8
src/config/attachment.provider.ts
Normal file
8
src/config/attachment.provider.ts
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { Provider } from "@nestjs/common";
|
||||||
|
import { resolveAttachmentsRoot } from "./attachment.config";
|
||||||
|
export const ATTACHMENTS_ROOT = Symbol('ATTACHMENTS_ROOT');
|
||||||
|
|
||||||
|
export const attachmentsRootProvider: Provider = {
|
||||||
|
provide: ATTACHMENTS_ROOT,
|
||||||
|
useFactory: () => resolveAttachmentsRoot(),
|
||||||
|
};
|
||||||
8
src/config/config.module.ts
Normal file
8
src/config/config.module.ts
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { attachmentsRootProvider } from "./attachment.provider";
|
||||||
|
import { Module } from "@nestjs/common";
|
||||||
|
|
||||||
|
@Module({
|
||||||
|
providers: [attachmentsRootProvider],
|
||||||
|
exports: [attachmentsRootProvider],
|
||||||
|
})
|
||||||
|
export class AppConfigModule {}
|
||||||
14
src/main.ts
14
src/main.ts
|
|
@ -4,6 +4,11 @@ import * as nodeCrypto from 'crypto';
|
||||||
if(!(globalThis as any).crypto) {
|
if(!(globalThis as any).crypto) {
|
||||||
(globalThis as any).crypto = nodeCrypto;
|
(globalThis as any).crypto = nodeCrypto;
|
||||||
}
|
}
|
||||||
|
import { ensureAttachmentsTmpDir } from './config/attachment.fs';
|
||||||
|
|
||||||
|
import { resolveAttachmentsRoot } from './config/attachment.config';// log to be removed post dev
|
||||||
|
import { ATT_TMP_DIR } from './config/attachment.config'; // log to be removed post dev
|
||||||
|
|
||||||
import { ModuleRef, NestFactory, Reflector } from '@nestjs/core';
|
import { ModuleRef, NestFactory, Reflector } from '@nestjs/core';
|
||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module';
|
||||||
import { ValidationPipe } from '@nestjs/common';
|
import { ValidationPipe } from '@nestjs/common';
|
||||||
|
|
@ -76,9 +81,14 @@ async function bootstrap() {
|
||||||
const documentFactory = () => SwaggerModule.createDocument(app, config);
|
const documentFactory = () => SwaggerModule.createDocument(app, config);
|
||||||
const document = documentFactory()
|
const document = documentFactory()
|
||||||
SwaggerModule.setup('api/docs', app, document);
|
SwaggerModule.setup('api/docs', app, document);
|
||||||
|
|
||||||
writeFileSync('./docs/swagger/swagger-spec.json', JSON.stringify(document, null, 2));
|
writeFileSync('./docs/swagger/swagger-spec.json', JSON.stringify(document, null, 2));
|
||||||
|
|
||||||
|
// logs to be removed post dev
|
||||||
|
console.log('[ENV.ATTACHMENTS_ROOT]', process.env.ATTACHMENTS_ROOT);
|
||||||
|
console.log('[resolveAttachmentsRoot()]', resolveAttachmentsRoot());
|
||||||
|
console.log('[ATT_TMP_DIR()]', ATT_TMP_DIR());
|
||||||
|
|
||||||
|
await ensureAttachmentsTmpDir();
|
||||||
await app.listen(process.env.PORT ?? 3000);
|
await app.listen(process.env.PORT ?? 3000);
|
||||||
}
|
}
|
||||||
bootstrap();
|
bootstrap();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user