const config = require("../config");
const { createStorage } = require("./storageFactory");

class BaseStorage {

  constructor(storage) {
    this.storage = storage;
  }

  getLayers(ids, boundingbox) {
    return this.storage.getLayers(ids, boundingbox);
  }

  getPublicLayers() {
    return this.storage.getPublicLayers();
  }

  isPublic(url) {
    return this.storage.isPublic(url);
  }

  validateLayers(ids) {
    return this.storage.validateLayers(ids);
  }

}

class BaseStorageInstance {

  constructor() {
    if (!BaseStorageInstance.instance) {
      const storage = createStorage(config.storage);
      BaseStorageInstance.instance = new BaseStorage(storage)
    }
  }

  getInstance() {
    return BaseStorageInstance.instance;
  }

}

module.exports = BaseStorageInstance;