mirror of https://github.com/msgbyte/tailchat
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.
48 lines
1.1 KiB
TypeScript
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;
|