import { Db } from '../../db/db'; import { IChangeRequestSegmentUsageReadModel } from './change-request-segment-usage-read-model'; export class ChangeRequestSegmentUsageReadModel implements IChangeRequestSegmentUsageReadModel { private db: Db; constructor(db: Db) { this.db = db; } public async isSegmentUsedInActiveChangeRequests( segmentId: number, ): Promise { const result = await this.db.raw( `SELECT events.* FROM change_request_events events JOIN change_requests cr ON events.change_request_id = cr.id WHERE cr.state IN ('Draft', 'In Review', 'Scheduled', 'Approved') AND events.action IN ('updateStrategy', 'addStrategy');`, ); const isUsed = result.rows.some((row) => row.payload?.segments?.includes(segmentId), ); return isUsed; } }