// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

const {Storage} = require('@google-cloud/storage');
const {format} = require('date-fns');

const gcsOutputBucket =
  process.env.GCLOUD_STORAGE_BUCKET || 'nodejs-docs-samples-tests';

module.exports.createOutputGcsUri = async function () {
  const prefix = `text_output/${format(new Date(), 'yyyy-MM-dd-HH-mm-ss')}`;
  const gcsUri = `gs://${gcsOutputBucket}/${prefix}`;

  return {
    uri: gcsUri,
    async cleanup() {
      const storage = new Storage();
      const bucket = storage.bucket(gcsOutputBucket);

      const [files] = await bucket.getFiles({prefix});
      await Promise.all(files.map(file => file.delete()));
      console.log(`Deleted ${files.length} files from ${prefix}`);
    },
  };
};
