feat: create getDittoDomainsController

This commit is contained in:
P. Reis 2024-08-13 20:57:20 -03:00
parent 01fe2faaeb
commit 73eaf00059
2 changed files with 16 additions and 1 deletions

View file

@ -41,6 +41,7 @@ import {
adminSetRelaysController, adminSetRelaysController,
deleteZapSplitsController, deleteZapSplitsController,
getDittoDomainController, getDittoDomainController,
getDittoDomainsController,
getZapSplitsController, getZapSplitsController,
nameRequestController, nameRequestController,
nameRequestsController, nameRequestsController,
@ -282,6 +283,7 @@ app.post('/api/v1/ditto/zap', requireSigner, zapController);
app.get('/api/v1/ditto/statuses/:id{[0-9a-f]{64}}/zapped_by', zappedByController); app.get('/api/v1/ditto/statuses/:id{[0-9a-f]{64}}/zapped_by', zappedByController);
app.get('/api/v1/ditto/domains/:domain', getDittoDomainController); app.get('/api/v1/ditto/domains/:domain', getDittoDomainController);
app.get('/api/v1/ditto/domains', getDittoDomainsController);
app.post('/api/v1/reports', requireSigner, reportController); app.post('/api/v1/reports', requireSigner, reportController);
app.get('/api/v1/admin/reports', requireSigner, requireRole('admin'), adminReportsController); app.get('/api/v1/admin/reports', requireSigner, requireRole('admin'), adminReportsController);

View file

@ -7,7 +7,7 @@ import { addTag } from '@/utils/tags.ts';
import { AdminSigner } from '@/signers/AdminSigner.ts'; import { AdminSigner } from '@/signers/AdminSigner.ts';
import { booleanParamSchema, percentageSchema } from '@/schema.ts'; import { booleanParamSchema, percentageSchema } from '@/schema.ts';
import { Conf } from '@/config.ts'; import { Conf } from '@/config.ts';
import { createEvent, paginated, parseBody } from '@/utils/api.ts'; import { createEvent, paginated, paginatedList, parseBody } from '@/utils/api.ts';
import { deleteTag } from '@/utils/tags.ts'; import { deleteTag } from '@/utils/tags.ts';
import { DittoDB } from '@/db/DittoDB.ts'; import { DittoDB } from '@/db/DittoDB.ts';
import { DittoEvent } from '@/interfaces/DittoEvent.ts'; import { DittoEvent } from '@/interfaces/DittoEvent.ts';
@ -302,3 +302,16 @@ export const getDittoDomainController: AppController = async (c) => {
return c.json(result); return c.json(result);
}; };
export const getDittoDomainsController: AppController = async (c) => {
const { kysely } = await DittoDB.getInstance();
const params = c.get('listPagination');
const results = await kysely.selectFrom('ditto_domains')
.selectAll()
.orderBy('total_users', 'desc')
.limit(params.limit)
.execute();
return paginatedList(c, params, results);
};