Switchout DB to CockroachDB
This commit is contained in:
@@ -7,13 +7,15 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use MongoDB\BSON\UTCDateTime;
|
||||
|
||||
use App\Traits\ScopeActive;
|
||||
use App\Traits\{QueryCacheableConfig,ScopeActive};
|
||||
|
||||
class Domain extends Model
|
||||
{
|
||||
use HasFactory,ScopeActive;
|
||||
use HasFactory,ScopeActive,QueryCacheableConfig;
|
||||
|
||||
private const CACHE_TIME = 3600;
|
||||
private const STATS_MONTHS = 6;
|
||||
|
||||
@@ -65,17 +67,19 @@ class Domain extends Model
|
||||
|
||||
$key = sprintf('%s_%d','daily_area_stats',$this->id);
|
||||
|
||||
return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() {
|
||||
$where = [
|
||||
'echoarea_id'=>$this->echoareas->pluck('id')->toArray(),
|
||||
'datetime' => ['$gte',new UTCDateTime(Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())],
|
||||
];
|
||||
Cache::forget($key);
|
||||
return Cache::remember($key,self::CACHE_TIME,function() {
|
||||
$gb ="CONCAT(EXTRACT('year',datetime)::string,'-',LPAD(EXTRACT('month',datetime)::string,2,'0'),'-',LPAD(EXTRACT('day',datetime)::string,2,'0')) AS datetime";
|
||||
|
||||
$echostats = Echomail::countGroupBy(['datetime',['datetime'=>'%Y-%m-%d']],$where);
|
||||
$echostats = Echomail::select([DB::raw($gb),DB::raw('COUNT(*)')])
|
||||
->whereIn('id',$this->echoareas->pluck('id')->toArray())
|
||||
->where('datetime','>=',Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())
|
||||
->groupBy('datetime')
|
||||
->orderBy('datetime')
|
||||
->get();
|
||||
|
||||
return $echostats
|
||||
->sortBy(function($item) { return $item->id->datetime; })
|
||||
->map(function($item) { return ['x'=>Carbon::createFromFormat('Y-m-d',$item->id->datetime)->timestamp*1000,'y'=>$item->count]; })
|
||||
->map(function($item) { return ['x'=>$item->datetime->timestamp*1000,'y'=>$item->count]; })
|
||||
->values();
|
||||
});
|
||||
}
|
||||
@@ -87,17 +91,19 @@ class Domain extends Model
|
||||
|
||||
$key = sprintf('%s_%d-%d','daily_echoarea_stats',$this->id,$o->id);
|
||||
|
||||
return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() use ($o) {
|
||||
$where = [
|
||||
'echoarea_id'=>[$o->id],
|
||||
'datetime' => ['$gte',new UTCDateTime(Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())],
|
||||
];
|
||||
Cache::forget($key);
|
||||
return Cache::remember($key,self::CACHE_TIME,function() use ($o) {
|
||||
$gb ="CONCAT(EXTRACT('year',datetime)::string,'-',LPAD(EXTRACT('month',datetime)::string,2,'0'),'-',LPAD(EXTRACT('day',datetime)::string,2,'0')) AS datetime";
|
||||
|
||||
$echostats = Echomail::countGroupBy(['datetime',['datetime'=>'%Y-%m-%d']],$where);
|
||||
$echostats = Echomail::select([DB::raw($gb),DB::raw('COUNT(*)')])
|
||||
->whereIn('echoarea_id',[$o->id])
|
||||
->where('datetime','>=',Carbon::now()->subMonths(self::STATS_MONTHS)->startOfMonth())
|
||||
->groupBy('datetime')
|
||||
->orderBy('datetime')
|
||||
->get();
|
||||
|
||||
return $echostats
|
||||
->sortBy(function($item) { return $item->id->datetime; })
|
||||
->map(function($item) { return ['x'=>Carbon::createFromFormat('Y-m-d',$item->id->datetime)->timestamp*1000,'y'=>$item->count]; })
|
||||
->map(function($item) { return ['x'=>$item->datetime->timestamp*1000,'y'=>$item->count]; })
|
||||
->values();
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user