You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/server/plugins/com.msgbyte.discover/services/discover.service.dev.ts

48 lines
1.1 KiB
TypeScript

import type { TcContext } from 'tailchat-server-sdk';
import { TcService, TcDbService } from 'tailchat-server-sdk';
import type { DiscoverDocument, DiscoverModel } from '../models/discover';
/**
* Discover
*
* Add Discover panel which can help user found groups
*/
interface DiscoverService
extends TcService,
TcDbService<DiscoverDocument, DiscoverModel> {}
class DiscoverService extends TcService {
get serviceName() {
return 'plugin:com.msgbyte.discover';
}
onInit() {
this.registerLocalDb(require('../models/discover').default);
this.registerAction('all', this.all, {
params: {
page: { type: 'number', default: 1 },
size: { type: 'number', default: 20 },
},
});
}
async all(ctx: TcContext<{ page: number; size: number }>) {
const { page, size } = ctx.params;
const docs = await this.adapter.model
.find({
active: true,
})
.sort({ order: 'desc' })
.limit(size)
.skip(size * (page - 1))
.exec();
const list = await this.transformDocuments(ctx, {}, docs);
return { list };
}
}
export default DiscoverService;