mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 11:30:12 +08:00
fix: analytics type errors
This commit is contained in:
1 parent
f7e2b00358
commit
253564376d
26 files changed
+53
-322
No files matched your search
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"watch": ["src", "views"],
|
||||
"ext": "ts,handlebars,js",
|
||||
"ignore": ["src/**/*.spec.ts"],
|
||||
"exec": "node --loader ts-node/esm src/index.ts"
|
||||
}
|
||||
@@ -3,13 +3,12 @@
|
||||
"version": "1.0.0",
|
||||
"main": "src/index.js",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL",
|
||||
"scripts": {
|
||||
"start": "node dist/index.js",
|
||||
"build": "tsc -b -f",
|
||||
"watch": "tsc -b --watch",
|
||||
"dev": "nodemon"
|
||||
"start": "node dist/analytics/src/index.js",
|
||||
"build": "tsc",
|
||||
"type-check": "tsc --noEmit",
|
||||
"dev": "tsx watch src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "^16.4.5",
|
||||
@@ -23,9 +22,8 @@
|
||||
"@swc/helpers": "^0.5.6",
|
||||
"@types/express": "^4.17.21",
|
||||
"@types/node": "^20.11.20",
|
||||
"nodemon": "^3.1.0",
|
||||
"regenerator-runtime": "^0.14.1",
|
||||
"ts-node": "^10.9.2",
|
||||
"tsx": "^4.19.3",
|
||||
"typescript": "^5.3.3"
|
||||
}
|
||||
}
|
||||
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,
|
||||
|
||||
@@ -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,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 }
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 => {
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "src",
|
||||
"outDir": "./dist"
|
||||
},
|
||||
"include": ["src"],
|
||||
"references": [{ "path": "../models" }],
|
||||
"include": ["src", "../models"],
|
||||
"ts-node": {
|
||||
"swc": true
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user