// 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 { AttachmentDownloadSource } from '../Interface';

export const version = 1180;
export function updateToSchemaVersion1180(
  currentVersion: number,
  db: Database,
  logger: LoggerType
): void {
  if (currentVersion >= 1180) {
    return;
  }

  db.transaction(() => {
    db.exec(`      
        ALTER TABLE attachment_downloads
            ADD COLUMN source TEXT NOT NULL DEFAULT ${AttachmentDownloadSource.STANDARD};
        
        ALTER TABLE attachment_downloads
            -- this default value will be overridden by getNextAttachmentDownloadJobs 
            ADD COLUMN ciphertextSize INTEGER NOT NULL DEFAULT 0;
    `);

    db.exec(`      
        CREATE INDEX attachment_downloads_source_ciphertextSize
            ON attachment_downloads (
                source, ciphertextSize
            );
    `);

    db.pragma('user_version = 1180');
  })();
  logger.info('updateToSchemaVersion1180: success!');
}
