diff --git a/cli/src/commands/app.ts b/cli/src/commands/app.ts index 2452604a..e713d2d9 100644 --- a/cli/src/commands/app.ts +++ b/cli/src/commands/app.ts @@ -3,7 +3,7 @@ import { run } from '../app'; export const appCommand: CommandModule = { command: 'app', - describe: 'Tailchat cli 版本', + describe: 'Tailchat cli 版本(WIP)', builder: undefined, async handler() { await run(); diff --git a/cli/templates/server-plugin-full/{{id}}/package.json b/cli/templates/server-plugin-full/{{id}}/package.json index a73dbd51..d4156f19 100644 --- a/cli/templates/server-plugin-full/{{id}}/package.json +++ b/cli/templates/server-plugin-full/{{id}}/package.json @@ -8,5 +8,7 @@ "private": true, "scripts": {}, "devDependencies": {}, - "dependencies": {} + "dependencies": { + "tailchat-server-sdk": "*" + } } diff --git a/cli/templates/server-plugin-full/{{id}}/services/{{pickPluginName id}}.service.ts b/cli/templates/server-plugin-full/{{id}}/services/{{pickPluginName id}}.service.ts index d31f3c97..71b2404d 100644 --- a/cli/templates/server-plugin-full/{{id}}/services/{{pickPluginName id}}.service.ts +++ b/cli/templates/server-plugin-full/{{id}}/services/{{pickPluginName id}}.service.ts @@ -2,7 +2,9 @@ import { TcService, TcDbService } from 'tailchat-server-sdk'; import type { {{pickPluginNameUp id}}Document, {{pickPluginNameUp id}}Model } from '../models/{{pickPluginName id}}'; /** - * 任务管理服务 + * {{name}} + * + * {{desc}} */ interface {{pickPluginNameUp id}}Service extends TcService, diff --git a/cli/templates/server-plugin/{{id}}/package.json b/cli/templates/server-plugin/{{id}}/package.json index a73dbd51..d4156f19 100644 --- a/cli/templates/server-plugin/{{id}}/package.json +++ b/cli/templates/server-plugin/{{id}}/package.json @@ -8,5 +8,7 @@ "private": true, "scripts": {}, "devDependencies": {}, - "dependencies": {} + "dependencies": { + "tailchat-server-sdk": "*" + } } diff --git a/cli/templates/server-plugin/{{id}}/services/{{pickPluginName id}}.service.ts b/cli/templates/server-plugin/{{id}}/services/{{pickPluginName id}}.service.ts index d31f3c97..6e7dc140 100644 --- a/cli/templates/server-plugin/{{id}}/services/{{pickPluginName id}}.service.ts +++ b/cli/templates/server-plugin/{{id}}/services/{{pickPluginName id}}.service.ts @@ -2,7 +2,7 @@ import { TcService, TcDbService } from 'tailchat-server-sdk'; import type { {{pickPluginNameUp id}}Document, {{pickPluginNameUp id}}Model } from '../models/{{pickPluginName id}}'; /** - * 任务管理服务 + * {{desc}} */ interface {{pickPluginNameUp id}}Service extends TcService, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddd25429..6baf7526 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -837,6 +837,22 @@ importers: server/plugins/com.msgbyte.tasks/web/plugins/com.msgbyte.tasks: specifiers: {} + server/plugins/com.msgbyte.topic: + specifiers: + lodash: ^4.17.21 + nanoid: ^3.1.23 + tailchat-server-sdk: '*' + dependencies: + lodash: 4.17.21 + nanoid: 3.3.4 + tailchat-server-sdk: link:../../packages/sdk + + server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic: + specifiers: + react: 17.0.2 + devDependencies: + react: 17.0.2 + website: specifiers: '@docusaurus/core': 2.0.0-beta.18 diff --git a/server/packages/sdk/package.json b/server/packages/sdk/package.json index b7880fd2..9e4c2833 100644 --- a/server/packages/sdk/package.json +++ b/server/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "tailchat-server-sdk", - "version": "0.0.12", + "version": "0.0.14", "description": "", "main": "dist/index.js", "bin": { diff --git a/server/packages/sdk/src/structs/group.ts b/server/packages/sdk/src/structs/group.ts index 5376c6a6..fd66578e 100644 --- a/server/packages/sdk/src/structs/group.ts +++ b/server/packages/sdk/src/structs/group.ts @@ -4,13 +4,8 @@ export enum GroupPanelType { PLUGIN = 2, } -export interface GroupPanelMeta { - /** - * 变体 - * 比如消息面板的topic形式 - */ - variant?: 'topic'; -} +// TODO +export type GroupPanelMeta = {}; interface GroupMemberStruct { roles?: string[]; // 角色 diff --git a/server/models/group/topic.ts b/server/plugins/com.msgbyte.topic/models/topic.ts similarity index 54% rename from server/models/group/topic.ts rename to server/plugins/com.msgbyte.topic/models/topic.ts index 837107a3..46161718 100644 --- a/server/models/group/topic.ts +++ b/server/plugins/com.msgbyte.topic/models/topic.ts @@ -1,14 +1,7 @@ -import { - getModelForClass, - DocumentType, - Ref, - prop, -} from '@typegoose/typegoose'; -import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'; +import { db } from 'tailchat-server-sdk'; +const { getModelForClass, prop, TimeStamps } = db; import type { Types } from 'mongoose'; import { nanoid } from 'nanoid'; -import { User } from '../user/user'; -import { Group } from './group'; class GroupTopicComment { @prop({ @@ -19,8 +12,8 @@ class GroupTopicComment { @prop() content: string; - @prop({ ref: () => User }) - author: Ref; + @prop() + author: string; /** * 回复他人评论的id @@ -29,18 +22,18 @@ class GroupTopicComment { replyCommentId?: string; } -export class GroupTopic extends TimeStamps implements Base { +export class GroupTopic extends TimeStamps implements db.Base { _id: Types.ObjectId; id: string; @prop() content: string; - @prop({ ref: () => User }) - author: Ref; + @prop() + author: string; - @prop({ ref: () => Group }) - groupId: Ref; + @prop() + groupId: string; /** * 会话面板id @@ -55,7 +48,7 @@ export class GroupTopic extends TimeStamps implements Base { comment: GroupTopicComment[]; } -export type GroupTopicDocument = DocumentType; +export type GroupTopicDocument = db.DocumentType; const model = getModelForClass(GroupTopic); diff --git a/server/plugins/com.msgbyte.topic/package.json b/server/plugins/com.msgbyte.topic/package.json new file mode 100644 index 00000000..07072b3e --- /dev/null +++ b/server/plugins/com.msgbyte.topic/package.json @@ -0,0 +1,15 @@ +{ + "name": "tailchat-plugin-topic", + "version": "1.0.0", + "main": "index.js", + "author": "moonrailgun", + "description": "为群组提供话题功能", + "license": "MIT", + "private": true, + "scripts": {}, + "dependencies": { + "lodash": "^4.17.21", + "nanoid": "^3.1.23", + "tailchat-server-sdk": "*" + } +} diff --git a/server/services/core/group/topic.service.ts b/server/plugins/com.msgbyte.topic/services/topic.service.ts similarity index 88% rename from server/services/core/group/topic.service.ts rename to server/plugins/com.msgbyte.topic/services/topic.service.ts index 101a733e..65822e49 100644 --- a/server/services/core/group/topic.service.ts +++ b/server/plugins/com.msgbyte.topic/services/topic.service.ts @@ -1,27 +1,28 @@ -import type { - GroupTopicDocument, - GroupTopicModel, -} from '../../../models/group/topic'; +import _ from 'lodash'; import { TcService, TcDbService, TcContext, - call, GroupPanelType, + db, + call, } from 'tailchat-server-sdk'; -import { Types } from 'mongoose'; -import _ from 'lodash'; +import type { GroupTopicDocument, GroupTopicModel } from '../models/topic'; +const { Types } = db; +/** + * 群组话题 + */ interface GroupTopicService extends TcService, TcDbService {} class GroupTopicService extends TcService { get serviceName(): string { - return 'group.topic'; + return 'plugin:com.msgbyte.topic'; } onInit(): void { - this.registerLocalDb(require('../../../models/group/topic').default); + this.registerLocalDb(require('../models/topic').default); this.registerAction('create', this.create, { params: { diff --git a/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/manifest.json b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/manifest.json new file mode 100644 index 00000000..3e0d6513 --- /dev/null +++ b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/manifest.json @@ -0,0 +1,9 @@ +{ + "label": "群组话题", + "name": "com.msgbyte.topic", + "url": "{BACKEND}/plugins/com.msgbyte.topic/index.js", + "version": "0.0.0", + "author": "moonrailgun", + "description": "为群组提供话题功能", + "requireRestart": true +} diff --git a/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/package.json b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/package.json new file mode 100644 index 00000000..44d703d0 --- /dev/null +++ b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/package.json @@ -0,0 +1,11 @@ +{ + "name": "@plugins/com.msgbyte.topic", + "main": "src/index.tsx", + "version": "0.0.0", + "description": "为群组提供话题功能", + "private": true, + "dependencies": {}, + "devDependencies": { + "react": "17.0.2" + } +} diff --git a/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/src/index.tsx b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/src/index.tsx new file mode 100644 index 00000000..f7090de5 --- /dev/null +++ b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/src/index.tsx @@ -0,0 +1 @@ +console.log('Plugin 群组话题 is loaded'); diff --git a/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/tsconfig.json b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/tsconfig.json new file mode 100644 index 00000000..d9b47ed0 --- /dev/null +++ b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "jsx": "react", + "importsNotUsedAsValues": "error" + } +} diff --git a/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/types/tailchat.d.ts b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/types/tailchat.d.ts new file mode 100644 index 00000000..49f524ae --- /dev/null +++ b/server/plugins/com.msgbyte.topic/web/plugins/com.msgbyte.topic/types/tailchat.d.ts @@ -0,0 +1,2 @@ +declare module '@capital/common'; +declare module '@capital/component';