| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package routes
-
- import (
- "context"
-
- "git.x2erp.com/qdy/go-base/authbase"
- "git.x2erp.com/qdy/go-base/ctx"
- "git.x2erp.com/qdy/go-base/model/response"
- "git.x2erp.com/qdy/go-base/webx/router"
- "git.x2erp.com/qdy/go-svc-code/internal/opencode"
- )
-
- // SessionCreateRequest 创建会话请求
- type SessionCreateRequest struct {
- Title string `json:"title" binding:"required"`
- }
-
- // SessionResponse 会话响应
- type SessionResponse struct {
- ID string `json:"id"`
- Title string `json:"title"`
- Port int `json:"port"`
- BaseURL string `json:"baseURL"`
- }
-
- // RegisterSessionRoutes 注册会话管理路由
- func RegisterSessionRoutes(ws *router.RouterService, client opencode.OpenCodeClient) {
- // 创建会话(需要Token认证)
- ws.POST("/api/session/create",
- func(req *SessionCreateRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[SessionResponse], error) {
- session, err := client.CreateSession(ctx, req.Title)
- if err != nil {
- return &response.QueryResult[SessionResponse]{
- Success: false,
- Message: err.Error(),
- }, nil
- }
-
- return &response.QueryResult[SessionResponse]{
- Success: true,
- Data: SessionResponse{
- ID: session.ID,
- Title: session.Title,
- Port: client.GetPort(),
- BaseURL: client.GetBaseURL(),
- },
- }, nil
- },
- ).Use(authbase.TokenAuth).Desc("创建新的 opencode 会话").Register()
-
- // 获取会话列表(需要Token认证)
- ws.GET("/api/session/list",
- func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[[]opencode.Session], error) {
- sessions, err := client.ListSessions(ctx)
- if err != nil {
- return &response.QueryResult[[]opencode.Session]{
- Success: false,
- Message: err.Error(),
- }, nil
- }
-
- return &response.QueryResult[[]opencode.Session]{
- Success: true,
- Data: sessions,
- }, nil
- },
- ).Use(authbase.TokenAuth).Desc("获取 opencode 会话列表").Register()
-
- // 获取单个会话(暂不实现,因为 opencode API 可能不支持)
- // ws.GET("/api/session/get",
- // func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[opencode.Session], error) {
- // sessionID := reqCtx.GetQuery("id")
- // if sessionID == "" {
- // return &response.QueryResult[opencode.Session]{
- // Success: false,
- // Message: "参数 id 不能为空",
- // }, nil
- // }
- // session, err := client.GetSession(ctx, sessionID)
- // if err != nil {
- // return &response.QueryResult[opencode.Session]{
- // Success: false,
- // Message: err.Error(),
- // }, nil
- // }
- //
- // return &response.QueryResult[opencode.Session]{
- // Success: true,
- // Data: *session,
- // }, nil
- // },
- // ).Desc("获取 opencode 会话详情").Register()
- }
|