import { Injectable } from "@nestjs/common"; import { PrismaService } from "../_prisma/prisma.service"; import { Prisma } from "@prisma/client"; import { IamPolicy } from "./iam-policy.entity"; import { IamRole } from "./iam-role.entity"; import { EntityAlreadyExists } from "../aws-shared-entities/aws-exceptions"; @Injectable() export class IamService { constructor( private readonly prismaService: PrismaService, ) {} async createRole(data: Prisma.IamRoleCreateInput): Promise { try { const record = await this.prismaService.iamRole.create({ data }); return new IamRole(record); } catch (err) { throw new EntityAlreadyExists(`RoleName ${data.name} already exists`); } } async findOneRoleByName(accountId: string, name: string): Promise { const record = await this.prismaService.iamRole.findFirst({ where: { name, accountId, } }); return record ? new IamRole(record) : null; } async deleteRoleByName(accountId: string, name: string) { await this.prismaService.iamRole.deleteMany({ where: { name, accountId, } }); } async createPolicy(data: Prisma.IamPolicyCreateInput): Promise { const record = await this.prismaService.iamPolicy.create({ data }); return new IamPolicy(record); } }