ソースを参照

controller/repository/service

Alex Tran 2 年 前
コミット
17902861a9

+ 32 - 0
server/immich-openapi-specs.json

@@ -2021,6 +2021,38 @@
         ]
       }
     },
+    "/audit": {
+      "get": {
+        "operationId": "getAuditRecords",
+        "parameters": [],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            },
+            "description": ""
+          }
+        },
+        "security": [
+          {
+            "bearer": []
+          },
+          {
+            "cookie": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "tags": [
+          "Audit"
+        ]
+      }
+    },
     "/auth/admin-sign-up": {
       "post": {
         "operationId": "adminSignUp",

+ 7 - 0
server/src/domain/audit/audit.repository.ts

@@ -0,0 +1,7 @@
+import { AuditEntity } from '@app/infra/entities';
+
+export const IAuditRepository = 'IAuditRepository';
+
+export interface IAuditRepository {
+  get(): Promise<AuditEntity[]>;
+}

+ 13 - 0
server/src/domain/audit/audit.service.ts

@@ -0,0 +1,13 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import { IAuditRepository } from '.';
+
+@Injectable()
+export class AuditService {
+  private logger = new Logger(AuditService.name);
+
+  constructor(@Inject(IAuditRepository) private repository: IAuditRepository) {}
+
+  async getAuditRecords(): Promise<any> {
+    return this.repository.get();
+  }
+}

+ 2 - 0
server/src/domain/audit/index.ts

@@ -0,0 +1,2 @@
+export * from './audit.repository';
+export * from './audit.service';

+ 2 - 0
server/src/domain/domain.module.ts

@@ -2,6 +2,7 @@ import { DynamicModule, Global, Module, ModuleMetadata, OnApplicationShutdown, P
 import { AlbumService } from './album';
 import { APIKeyService } from './api-key';
 import { AssetService } from './asset';
+import { AuditService } from './audit';
 import { AuthService } from './auth';
 import { FacialRecognitionService } from './facial-recognition';
 import { JobService } from './job';
@@ -46,6 +47,7 @@ const providers: Provider[] = [
       return configService.getConfig();
     },
   },
+  AuditService,
 ];
 
 @Global()

+ 1 - 0
server/src/domain/index.ts

@@ -2,6 +2,7 @@ export * from './access';
 export * from './album';
 export * from './api-key';
 export * from './asset';
+export * from './audit';
 export * from './auth';
 export * from './communication';
 export * from './crypto';

+ 2 - 0
server/src/immich/app.module.ts

@@ -28,6 +28,7 @@ import {
   TagController,
   UserController,
 } from './controllers';
+import { AuditController } from './controllers/audit.controller';
 
 @Module({
   imports: [
@@ -42,6 +43,7 @@ import {
     AppController,
     AlbumController,
     APIKeyController,
+    AuditController,
     AuthController,
     JobController,
     OAuthController,

+ 19 - 0
server/src/immich/controllers/audit.controller.ts

@@ -0,0 +1,19 @@
+import { AllJobStatusResponseDto, JobCommandDto, JobIdParamDto, JobService, JobStatusDto } from '@app/domain';
+import { AuditService } from '@app/domain/audit';
+import { Body, Controller, Get } from '@nestjs/common';
+import { ApiTags } from '@nestjs/swagger';
+import { Authenticated } from '../app.guard';
+import { UseValidation } from '../app.utils';
+
+@ApiTags('Audit')
+@Controller('audit')
+@Authenticated({ admin: true })
+@UseValidation()
+export class AuditController {
+  constructor(private service: AuditService) {}
+
+  @Get()
+  getAuditRecords(): Promise<any> {
+    return this.service.getAuditRecords();
+  }
+}

+ 1 - 0
server/src/immich/controllers/index.ts

@@ -2,6 +2,7 @@ export * from './album.controller';
 export * from './api-key.controller';
 export * from './app.controller';
 export * from './asset.controller';
+export * from './audit.controller';
 export * from './auth.controller';
 export * from './job.controller';
 export * from './oauth.controller';

+ 3 - 0
server/src/infra/infra.module.ts

@@ -2,6 +2,7 @@ import {
   IAccessRepository,
   IAlbumRepository,
   IAssetRepository,
+  IAuditRepository,
   ICommunicationRepository,
   ICryptoRepository,
   IFaceRepository,
@@ -35,6 +36,7 @@ import {
   AlbumRepository,
   APIKeyRepository,
   AssetRepository,
+  AuditRepository,
   CommunicationRepository,
   CryptoRepository,
   FaceRepository,
@@ -58,6 +60,7 @@ const providers: Provider[] = [
   { provide: IAccessRepository, useClass: AccessRepository },
   { provide: IAlbumRepository, useClass: AlbumRepository },
   { provide: IAssetRepository, useClass: AssetRepository },
+  { provide: IAuditRepository, useClass: AuditRepository },
   { provide: ICommunicationRepository, useClass: CommunicationRepository },
   { provide: ICryptoRepository, useClass: CryptoRepository },
   { provide: IFaceRepository, useClass: FaceRepository },

+ 12 - 0
server/src/infra/repositories/audit.repository.ts

@@ -0,0 +1,12 @@
+import { IAuditRepository } from '@app/domain/audit/audit.repository';
+import { InjectRepository } from '@nestjs/typeorm';
+import { Repository } from 'typeorm';
+import { AuditEntity } from '../entities';
+
+export class AuditRepository implements IAuditRepository {
+  constructor(@InjectRepository(AuditEntity) private repository: Repository<AuditEntity>) {}
+
+  get(): Promise<AuditEntity[]> {
+    return this.repository.find();
+  }
+}

+ 1 - 0
server/src/infra/repositories/index.ts

@@ -2,6 +2,7 @@ export * from './access.repository';
 export * from './album.repository';
 export * from './api-key.repository';
 export * from './asset.repository';
+export * from './audit.repository';
 export * from './communication.repository';
 export * from './crypto.repository';
 export * from './face.repository';