import { Prisma, PrismaClient } from '@prisma/client'; import {User} from '../common'; import {Log, LogParameterData} from './models'; export interface LogService { create(subject: User, action: string, ...parameters: LogParameterData[]): Promise } export class LogServiceImpl implements LogService { private readonly prismaClient: PrismaClient constructor() { this.prismaClient = new PrismaClient() } async create(subject: User, action: string, ...parameters: LogParameterData[]): Promise { const createData: Prisma.LogCreateInput = { subjectUsername: subject.username, subjectUserId: subject.id, action, } if (parameters.length > 0) { createData['parameters'] = { create: parameters, } } return this.prismaClient.log.create({ data: createData, }) } }