/[sudobot]/trunk/src/api/controllers/HistoryController.ts
ViewVC logotype

Annotation of /trunk/src/api/controllers/HistoryController.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 464 - (hide annotations)
Mon Jul 29 17:30:22 2024 UTC (8 months, 3 weeks ago) by rakin
File MIME type: application/typescript
File size: 1758 byte(s)
feat(api): add history controller
1 rakin 464 import Punishment from "../../models/Punishment";
2     import Controller from "../Controller";
3     import RequireAuth from "../middleware/RequireAuth";
4     import ValidatorError from "../middleware/ValidatorError";
5     import Request from "../Request";
6    
7     export default class HistoryController extends Controller {
8     globalMiddleware(): Function[] {
9     return [RequireAuth, ValidatorError];
10     }
11    
12     async index(request: Request) {
13     if (!request.user?.guilds.includes(request.params.id)) {
14     return this.response({ error: "You don't have permission to access history of this guild." }, 403);
15     }
16    
17     const queryLimit = parseInt((request.query.limit as string) ?? '0');
18     const limit = request.query.limit ? (queryLimit < 1 || queryLimit > 20 ? 20 : queryLimit) : 20;
19     const maxPages = Math.ceil((await Punishment.count({ guild_id: request.params.id })) / limit);
20     const page = request.query.page ? parseInt(request.query.page as string) : 1;
21    
22     if (maxPages < page) {
23     return this.response({ error: "That page does not exist" }, 404);
24     }
25    
26     const offset = (page - 1) * limit;
27    
28     const data = (await Punishment.find({ guild_id: request.params.id }).skip(offset).limit(limit));
29     const newData = [];
30    
31     for await (const row of data) {
32     let user = { id: row.user_id };
33    
34     try {
35     user = this.client.users.cache.get(row.user_id) || await this.client.users.fetch(row.user_id);
36     }
37     catch (e) {
38     console.log(e);
39     }
40    
41     const newRow = {
42     ...(row.toJSON()),
43     user
44     };
45    
46     newData.push(newRow);
47     }
48    
49     return newData;
50     }
51     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26