Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Storage API and ContextualStorage is missing a lot of helpers #2369

Closed
FrittenKeeZ opened this issue Mar 14, 2019 · 2 comments

Comments

Projects
None yet
4 participants
@FrittenKeeZ
Copy link

commented Mar 14, 2019

Describe the bug
Calling $this->storage->exists($key) or $this->storage->delete($key) from an addon fails as the methods don't exists.

Expected behavior
Equivalent helpers of putJSON for exists and delete should work.

Environment details (please complete the following information):

  • Statamic Version: 2.9.11

Additional context
Patch to fix everything:

diff --git statamic/core/API/Storage.php statamic/core/API/Storage.php
index 23f21a8..f547593 100644
--- statamic/core/API/Storage.php
+++ statamic/core/API/Storage.php
@@ -8,7 +8,7 @@ class Storage
      * Save a key to storage
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public static function put($key, $data)
     {
@@ -19,7 +19,7 @@ class Storage
      * Save a key to storage as YAML
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public static function putYAML($key, $data)
     {
@@ -34,7 +34,7 @@ class Storage
      * Save a key to storage as a serialized array
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public static function putSerialized($key, $data)
     {
@@ -45,7 +45,7 @@ class Storage
      * Save a key to storage as JSON
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public static function putJSON($key, $data)
     {
@@ -53,7 +53,7 @@ class Storage
     }
 
     /**
-     * Check if a key exists
+     * Check if a key exists in storage
      *
      * @param  string $key Key to check
      * @return bool
@@ -63,6 +63,39 @@ class Storage
         return File::disk('storage')->exists(self::getPath($key));
     }
 
+    /**
+     * Check if a key exists in storage as YAML
+     *
+     * @param  string $key Key to check
+     * @return bool
+     */
+    public static function existsYAML($key)
+    {
+        return self::exists(Str::ensureRight($key, '.yaml'));
+    }
+
+    /**
+     * Check if a key exists in storage as a serialized array
+     *
+     * @param  string $key Key to check
+     * @return bool
+     */
+    public static function existsSerialized($key)
+    {
+        return self::exists(Str::ensureRight($key, '.php'));
+    }
+
+    /**
+     * Check if a key exists in storage as JSON
+     *
+     * @param  string $key Key to check
+     * @return bool
+     */
+    public static function existsJSON($key)
+    {
+        return self::exists(Str::ensureRight($key, '.json'));
+    }
+
     /**
      * Delete a key from storage
      *
@@ -74,7 +107,37 @@ class Storage
     }
 
     /**
-     * Get a key from the cache
+     * Delete a YAML key from storage
+     *
+     * @param string $key   Key to delete
+     */
+    public static function deleteYAML($key)
+    {
+        self::delete(Str::ensureRight($key, '.yaml'));
+    }
+
+    /**
+     * Delete a serialized array key from storage
+     *
+     * @param string $key   Key to delete
+     */
+    public static function deleteSerialized($key)
+    {
+        self::delete(Str::ensureRight($key, '.php'));
+    }
+
+    /**
+     * Delete a JSON key from storage
+     *
+     * @param string $key   Key to delete
+     */
+    public static function deleteJSON($key)
+    {
+        self::delete(Str::ensureRight($key, '.json'));
+    }
+
+    /**
+     * Get a key from the storage
      *
      * @param string $key      Key to retrieve
      * @param null   $default  Fallback data if the value doesn't exist
diff --git statamic/core/Extend/Contextual/ContextualStorage.php statamic/core/Extend/Contextual/ContextualStorage.php
index c0ab8ad..17d2f01 100644
--- statamic/core/Extend/Contextual/ContextualStorage.php
+++ statamic/core/Extend/Contextual/ContextualStorage.php
@@ -10,7 +10,7 @@ class ContextualStorage extends ContextualObject
      * Save a key to storage
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public function put($key, $data)
     {
@@ -21,7 +21,7 @@ class ContextualStorage extends ContextualObject
      * Save a key to storage as YAML
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public function putYAML($key, $data)
     {
@@ -32,7 +32,7 @@ class ContextualStorage extends ContextualObject
      * Save a key to storage as a serialized array
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public function putSerialized($key, $data)
     {
@@ -43,7 +43,7 @@ class ContextualStorage extends ContextualObject
      * Save a key to storage as JSON
      *
      * @param string $key   Key to save under
-     * @param mixed  $data  Data to cache
+     * @param mixed  $data  Data to store
      */
     public function putJSON($key, $data)
     {
@@ -51,7 +51,91 @@ class ContextualStorage extends ContextualObject
     }
 
     /**
-     * Get a key from the cache
+     * Check if a key exists in the storage
+     *
+     * @param  string $key Key to check
+     * @return bool
+     */
+    public function exists($key)
+    {
+        return Storage::exists($this->contextualize($key));
+    }
+
+    /**
+     * Check if a key exists in storage as YAML
+     *
+     * @param  string $key Key to check
+     * @return bool
+     */
+    public function existsYAML($key)
+    {
+        return Storage::existsYAML($this->contextualize($key));
+    }
+
+    /**
+     * Check if a key exists in storage as a serialized array
+     *
+     * @param  string $key Key to check
+     * @return bool
+     */
+    public function existsSerialized($key)
+    {
+        return Storage::existsSerialized($this->contextualize($key));
+    }
+
+    /**
+     * Check if a key exists in storage as JSON
+     *
+     * @param  string $key Key to check
+     * @return bool
+     */
+    public function existsJSON($key)
+    {
+        return Storage::existsJSON($this->contextualize($key));
+    }
+
+    /**
+     * Delete a key from storage
+     *
+     * @param string $key   Key to delete
+     */
+    public function delete($key)
+    {
+        Storage::delete($this->contextualize($key));
+    }
+
+    /**
+     * Delete a YAML key from storage
+     *
+     * @param string $key   Key to delete
+     */
+    public function deleteYAML($key)
+    {
+        Storage::deleteYAML($this->contextualize($key));
+    }
+
+    /**
+     * Delete a serialized array key from storage
+     *
+     * @param string $key   Key to delete
+     */
+    public function deleteSerialized($key)
+    {
+        Storage::deleteSerialized($this->contextualize($key));
+    }
+
+    /**
+     * Delete a JSON key from storage
+     *
+     * @param string $key   Key to delete
+     */
+    public function deleteJSON($key)
+    {
+        Storage::deleteJSON($this->contextualize($key));
+    }
+
+    /**
+     * Get a key from the storage
      *
      * @param string $key      Key to retrieve
      * @param null   $default  Fallback data if the value doesn't exist
@alexanderhofstaetter

This comment has been minimized.

Copy link

commented Apr 23, 2019

This is still not fixed. I have the same problem because i wanted to use the exists method.

@jesseleite

This comment has been minimized.

Copy link
Member

commented Apr 26, 2019

Will be in next release. Thanks for the implementation @FrittenKeeZ

@jasonvarga jasonvarga closed this Apr 26, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.