fix: analytics type errors

This commit is contained in:
Justin Lin committed 2025-04-26 13:10:48 +08:00
1 parent f7e2b00358
commit 253564376d
26 files changed
+53 -322

No files matched your search

View File
Whitespace-only changes.
@@ -1,6 +1,6 @@
import type { Request, Response } from 'express'
import Pagination from '../models/pagination.js'
import { errorCommands } from '../models/commands.js'
import Pagination from '../models/pagination'
import { errorCommands } from '../models/commands'
export async function commandListController(
req: Request,
+2 -2
View File
@@ -1,6 +1,6 @@
import { Request, Response } from 'express'
import { userCount } from '../models/users.js'
import { questList } from '../models/quests.js'
import { userCount } from '../models/users'
import { questList } from '../models/quests'
export async function homeController(req: Request, res: Response) {
const quests = await questList()
+1 -1
View File
@@ -1,5 +1,5 @@
import { Request, Response } from 'express'
import { questList } from '../models/quests.js'
import { questList } from '../models/quests'
export async function questListController(req: Request, res: Response) {
const quests = await questList()
@@ -1,6 +1,6 @@
import { Request, Response } from 'express'
import Pagination from '../models/pagination.js'
import { sessionList, sessionDetail } from '../models/sessions.js'
import Pagination from '../models/pagination'
import { sessionList, sessionDetail } from '../models/sessions'
export async function sessionListController(req: Request, res: Response) {
const { nextKey, order } = req.query as { nextKey: string; order: string }
+2 -2
View File
@@ -1,7 +1,7 @@
import { Request, Response } from 'express'
import mongoose from 'mongoose'
import Pagination from '../models/pagination.js'
import { userList, userDetail, idToUser } from '../models/users.js'
import Pagination from '../models/pagination'
import { userList, userDetail, idToUser } from '../models/users'
export async function userListController(req: Request, res: Response) {
const { nextKey, order } = req.query as { nextKey: string; order: string }
+3 -3
View File
@@ -1,9 +1,9 @@
import connectDB from '@models'
import { connectDB } from '../../models'
import express from 'express'
import { engine } from 'express-handlebars'
import basicAuth from 'express-basic-auth'
import config from './config.js'
import router from './router.js'
import config from './config'
import router from './router'
async function main() {
await connectDB(config.db)
+2 -2
View File
@@ -1,5 +1,5 @@
import { Command } from '@models'
import Pagination from './pagination.js'
import { Command } from '../../../models'
import Pagination from './pagination'
// eslint-disable-next-line import/prefer-default-export
export async function errorCommands(pagination: Pagination) {
@@ -1,5 +1,3 @@
/* eslint-disable class-methods-use-this */
// eslint-disable-next-line max-classes-per-file
import mongoose, { Types } from 'mongoose'
export const DESC: string = 'desc'
+10 -4
View File
@@ -1,8 +1,14 @@
/* eslint-disable object-shorthand */
/* eslint-disable func-names */
import { UserProfile } from '@models'
import { UserProfile } from '../../../models'
export function questList() {
export interface QuestProgress {
_id: string
started: number
completed: number
completedRate: number
failed: number
}
export function questList(): Promise<QuestProgress[]> {
return UserProfile.aggregate([
{
$project: {
+2 -2
View File
@@ -1,5 +1,5 @@
import { Command, Session } from '@models'
import Pagination from './pagination.js'
import { Command, Session } from '../../../models'
import Pagination from './pagination'
import {
CommandObject,
SessionDetail,
+10 -6
View File
@@ -1,7 +1,7 @@
import { Session, User } from '@models'
import { Types } from 'mongoose'
import Pagination from './pagination.js'
import { IUser, UserSessionDetail } from '../interface.js'
import { Session, User, IUser, ISession } from '../../../models'
import { HydratedDocument, Types } from 'mongoose'
import Pagination from './pagination'
import { UserSessionDetail } from '../interface'
function loginMethods(user: IUser): string[] {
const methods: string[] = []
@@ -23,7 +23,11 @@ export function userCount() {
}
export async function userList(pagination: Pagination) {
const users = await Session.aggregate([
const users: {
userData: HydratedDocument<IUser>
count: number
lastActivityAt: Date
}[] = await Session.aggregate([
pagination.match('user'),
{
$group: {
@@ -62,7 +66,7 @@ export async function userList(pagination: Pagination) {
export async function userDetail(
id: Types.ObjectId
): Promise<UserSessionDetail[]> {
const sessions = await Session.find({
const sessions: HydratedDocument<ISession>[] = await Session.find({
user: id,
})
return sessions.map((session): UserSessionDetail => {
+5 -8
View File
@@ -1,16 +1,13 @@
import { Router } from 'express'
import { homeController } from './controllers/index.js'
import {
userListController,
userDetailController,
} from './controllers/users.js'
import { questListController } from './controllers/quests.js'
import { commandListController } from './controllers/commands.js'
import { homeController } from './controllers/index'
import { userListController, userDetailController } from './controllers/users'
import { questListController } from './controllers/quests'
import { commandListController } from './controllers/commands'
import {
sessionDetailController,
sessionListController,
} from './controllers/sessions.js'
} from './controllers/sessions'
const router = Router()