Daniel Supernault 4 роки тому
батько
коміт
3136f8e137
1 змінених файлів з 69 додано та 0 видалено
  1. 69 0
      app/Services/ConfigCacheService.php

+ 69 - 0
app/Services/ConfigCacheService.php

@@ -0,0 +1,69 @@
+<?php
+
+namespace App\Services;
+
+use Cache;
+use Config;
+use App\Models\ConfigCache as ConfigCacheModel;
+
+class ConfigCacheService
+{
+	const CACHE_KEY = 'config_cache:_key:';
+
+	public static function get($key)
+	{
+		$cacheKey = "config_cache:_key:{$key}";
+		$ttl = now()->addHours(12);
+		return Cache::remember($cacheKey, $ttl, function() use($key) {
+
+			$allowed = [
+				'app.name',
+				'app.short_description',
+				'app.description',
+				'app.rules',
+				'app.logo'
+			];
+
+			if(!in_array($key, $allowed)) {
+				return config($key);
+			}
+
+			$v = config($key);
+			$c = ConfigCacheModel::where('k', $key)->first();
+
+			if($c) {
+				return $c->v;
+			}
+
+			if(!$v) {
+				return;
+			}
+
+			$cc = new ConfigCacheModel;
+			$cc->k = $key;
+			$cc->v = $v;
+			$cc->save();
+
+			return $v;
+		});
+	}
+
+	public static function put($key, $val)
+	{
+		$exists = ConfigCacheModel::whereK($key)->first();
+
+		if($exists) {
+			$exists->v = $val;
+			$exists->save();
+			Cache::forget(self::CACHE_KEY . $key);
+			return self::get($key);
+		}
+
+		$cc = new ConfigCacheModel;
+		$cc->k = $key;
+		$cc->v = $val;
+		$cc->save();
+
+		return self::get($key);
+	}
+}