// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { Database } from '@signalapp/sqlcipher';
import type { LoggerType } from '../../types/Logging';
import { sql, sqlConstant } from '../util';
import { CallDirection, CallStatusValue } from '../../types/CallDisposition';

export const version = 1160;

const CALL_STATUS_MISSED = sqlConstant(CallStatusValue.Missed);
const CALL_DIRECTION_INCOMING = sqlConstant(CallDirection.Incoming);

export function updateToSchemaVersion1160(
  currentVersion: number,
  db: Database,
  logger: LoggerType
): void {
  if (currentVersion >= 1160) {
    return;
  }

  db.transaction(() => {
    const [query] = sql`
      DROP INDEX IF EXISTS callsHistory_incoming_missed;

      CREATE INDEX callsHistory_incoming_missed
        ON callsHistory (callId, status, direction)
        WHERE status IS ${CALL_STATUS_MISSED}
          AND direction IS ${CALL_DIRECTION_INCOMING};
    `;
    db.exec(query);

    db.pragma('user_version = 1160');
  })();
  logger.info('updateToSchemaVersion1160: success!');
}
