<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

function Mirai_api_level_rank($db, $user) {
    $page = max(1, (int)($_POST['page'] ?? 1));
    $pageSize = min(50, max(1, (int)($_POST['pageSize'] ?? 20)));
    $offset = ($page - 1) * $pageSize;

    $rows = $db->fetchAll($db->select('uid', 'name', 'screenName', 'avatar', 'level', 'exp')
        ->from('table.users')
        ->where('level > ?', 1)
        ->order('exp', \Typecho\Db::SORT_DESC)
        ->limit($pageSize)
        ->offset($offset));

    $list = [];
    foreach ($rows as $row) {
        $list[] = [
            'uid' => (int)$row['uid'],
            'name' => $row['screenName'] ?? $row['name'],
            'avatar' => $row['avatar'] ?? '',
            'level' => (int)$row['level'],
            'level_name' => Mirai_levelGetName((int)$row['level']),
            'exp' => (int)$row['exp'],
        ];
    }

    return ['code' => 0, 'data' => ['list' => $list, 'page' => $page, 'pageSize' => $pageSize]];
}
