Merge pull request #4699 from pixelfed/staging

Update nodeinfo
This commit is contained in:
daniel 2023-10-12 21:30:30 -06:00 committed by GitHub
commit a1b280ec33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 89 additions and 84 deletions

View File

@ -34,6 +34,7 @@ use App\Transformer\Api\Mastodon\v1\{
use App\Transformer\Api\{ use App\Transformer\Api\{
RelationshipTransformer, RelationshipTransformer,
}; };
use App\Util\Site\Nodeinfo;
class ApiV2Controller extends Controller class ApiV2Controller extends Controller
{ {
@ -77,12 +78,7 @@ class ApiV2Controller extends Controller
'description' => config_cache('app.short_description'), 'description' => config_cache('app.short_description'),
'usage' => [ 'usage' => [
'users' => [ 'users' => [
'active_month' => (int) Cache::remember('api:nodeinfo:am', 172800, function() { 'active_month' => (int) Nodeinfo::activeUsersMonthly()
return User::select('last_active_at', 'created_at')
->where('last_active_at', '>', now()->subMonths(1))
->orWhere('created_at', '>', now()->subMonths(1))
->count();
})
] ]
], ],
'thumbnail' => [ 'thumbnail' => [

View File

@ -9,17 +9,13 @@ use Illuminate\Support\Facades\Redis;
use App\Status; use App\Status;
use App\User; use App\User;
use App\Services\AccountService; use App\Services\AccountService;
use App\Util\Site\Nodeinfo;
class LandingService class LandingService
{ {
public static function get($json = true) public static function get($json = true)
{ {
$activeMonth = Cache::remember('api:nodeinfo:am', 172800, function() { $activeMonth = Nodeinfo::activeUsersMonthly();
return User::select('last_active_at')
->where('last_active_at', '>', now()->subMonths(1))
->orWhere('created_at', '>', now()->subMonths(1))
->count();
});
$totalUsers = Cache::remember('api:nodeinfo:users', 43200, function() { $totalUsers = Cache::remember('api:nodeinfo:users', 43200, function() {
return User::count(); return User::count();

View File

@ -2,28 +2,20 @@
namespace App\Util\Site; namespace App\Util\Site;
use Cache; use Illuminate\Support\Facades\Cache;
use App\{Like, Profile, Status, User}; use App\Like;
use App\Profile;
use App\Status;
use App\User;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class Nodeinfo { class Nodeinfo
{
public static function get() public static function get()
{ {
$res = Cache::remember('api:nodeinfo', 300, function () { $res = Cache::remember('api:nodeinfo', 900, function () {
$activeHalfYear = Cache::remember('api:nodeinfo:ahy', 172800, function() { $activeHalfYear = self::activeUsersHalfYear();
return User::select('last_active_at') $activeMonth = self::activeUsersMonthly();
->where('last_active_at', '>', now()->subMonths(6))
->orWhere('created_at', '>', now()->subMonths(6))
->count();
});
$activeMonth = Cache::remember('api:nodeinfo:am', 172800, function() {
return User::select('last_active_at')
->where('last_active_at', '>', now()->subMonths(1))
->orWhere('created_at', '>', now()->subMonths(1))
->count();
});
$users = Cache::remember('api:nodeinfo:users', 43200, function() { $users = Cache::remember('api:nodeinfo:users', 43200, function() {
return User::count(); return User::count();
@ -83,4 +75,25 @@ class Nodeinfo {
]; ];
} }
public static function activeUsersMonthly()
{
return Cache::remember('api:nodeinfo:active-users-monthly', 43200, function() {
return User::withTrashed()
->select('last_active_at, updated_at')
->where('updated_at', '>', now()->subWeeks(5))
->orWhere('last_active_at', '>', now()->subWeeks(5))
->count();
});
}
public static function activeUsersHalfYear()
{
return Cache::remember('api:nodeinfo:active-users-half-year', 43200, function() {
return User::withTrashed()
->select('last_active_at, updated_at')
->where('last_active_at', '>', now()->subMonths(6))
->orWhere('updated_at', '>', now()->subMonths(6))
->count();
});
}
} }