feat: update the redis reference to cache.Cmdable instead (#535)

This commit is contained in:
Ryo 2025-08-04 17:36:18 +08:00 committed by GitHub
parent c7bf6bbdec
commit adc5986d13
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 74 additions and 78 deletions

View File

@ -17,7 +17,6 @@
package app package app
import ( import (
redisV9 "github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/app/repository" "github.com/coze-dev/coze-studio/backend/domain/app/repository"
@ -26,6 +25,7 @@ import (
variables "github.com/coze-dev/coze-studio/backend/domain/memory/variables/service" variables "github.com/coze-dev/coze-studio/backend/domain/memory/variables/service"
search "github.com/coze-dev/coze-studio/backend/domain/search/service" search "github.com/coze-dev/coze-studio/backend/domain/search/service"
user "github.com/coze-dev/coze-studio/backend/domain/user/service" user "github.com/coze-dev/coze-studio/backend/domain/user/service"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
"github.com/coze-dev/coze-studio/backend/infra/contract/modelmgr" "github.com/coze-dev/coze-studio/backend/infra/contract/modelmgr"
"github.com/coze-dev/coze-studio/backend/infra/contract/storage" "github.com/coze-dev/coze-studio/backend/infra/contract/storage"
@ -35,7 +35,7 @@ type ServiceComponents struct {
IDGen idgen.IDGenerator IDGen idgen.IDGenerator
DB *gorm.DB DB *gorm.DB
OSS storage.Storage OSS storage.Storage
CacheCli *redisV9.Client CacheCli cache.Cmdable
ProjectEventBus search.ProjectEventBus ProjectEventBus search.ProjectEventBus
ModelMgr modelmgr.Manager ModelMgr modelmgr.Manager

View File

@ -19,12 +19,11 @@ package memory
import ( import (
"gorm.io/gorm" "gorm.io/gorm"
"github.com/redis/go-redis/v9"
database "github.com/coze-dev/coze-studio/backend/domain/memory/database/service" database "github.com/coze-dev/coze-studio/backend/domain/memory/database/service"
"github.com/coze-dev/coze-studio/backend/domain/memory/variables/repository" "github.com/coze-dev/coze-studio/backend/domain/memory/variables/repository"
variables "github.com/coze-dev/coze-studio/backend/domain/memory/variables/service" variables "github.com/coze-dev/coze-studio/backend/domain/memory/variables/service"
search "github.com/coze-dev/coze-studio/backend/domain/search/service" search "github.com/coze-dev/coze-studio/backend/domain/search/service"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
"github.com/coze-dev/coze-studio/backend/infra/contract/rdb" "github.com/coze-dev/coze-studio/backend/infra/contract/rdb"
"github.com/coze-dev/coze-studio/backend/infra/contract/storage" "github.com/coze-dev/coze-studio/backend/infra/contract/storage"
@ -43,7 +42,7 @@ type ServiceComponents struct {
EventBus search.ResourceEventBus EventBus search.ResourceEventBus
TosClient storage.Storage TosClient storage.Storage
ResourceDomainNotifier search.ResourceEventBus ResourceDomainNotifier search.ResourceEventBus
CacheCli *redis.Client CacheCli cache.Cmdable
} }
func InitService(c *ServiceComponents) *MemoryApplicationServices { func InitService(c *ServiceComponents) *MemoryApplicationServices {

View File

@ -18,9 +18,10 @@ package singleagent
import ( import (
"github.com/cloudwego/eino/compose" "github.com/cloudwego/eino/compose"
"github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/repository" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/repository"
singleagent "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/service" singleagent "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/service"
@ -50,7 +51,7 @@ var SingleAgentSVC *SingleAgentApplicationService
type ServiceComponents struct { type ServiceComponents struct {
IDGen idgen.IDGenerator IDGen idgen.IDGenerator
DB *gorm.DB DB *gorm.DB
Cache *redis.Client Cache cache.Cmdable
TosClient storage.Storage TosClient storage.Storage
ImageX imagex.ImageX ImageX imagex.ImageX
EventBus search.ProjectEventBus EventBus search.ProjectEventBus

View File

@ -20,12 +20,9 @@ import (
"context" "context"
"github.com/cloudwego/eino/compose" "github.com/cloudwego/eino/compose"
"github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/application/internal" "github.com/coze-dev/coze-studio/backend/application/internal"
"github.com/coze-dev/coze-studio/backend/pkg/logs"
wfdatabase "github.com/coze-dev/coze-studio/backend/crossdomain/workflow/database" wfdatabase "github.com/coze-dev/coze-studio/backend/crossdomain/workflow/database"
wfknowledge "github.com/coze-dev/coze-studio/backend/crossdomain/workflow/knowledge" wfknowledge "github.com/coze-dev/coze-studio/backend/crossdomain/workflow/knowledge"
wfmodel "github.com/coze-dev/coze-studio/backend/crossdomain/workflow/model" wfmodel "github.com/coze-dev/coze-studio/backend/crossdomain/workflow/model"
@ -46,17 +43,19 @@ import (
crosssearch "github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/search" crosssearch "github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/search"
crossvariable "github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/variable" crossvariable "github.com/coze-dev/coze-studio/backend/domain/workflow/crossdomain/variable"
"github.com/coze-dev/coze-studio/backend/domain/workflow/service" "github.com/coze-dev/coze-studio/backend/domain/workflow/service"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/coderunner" "github.com/coze-dev/coze-studio/backend/infra/contract/coderunner"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
"github.com/coze-dev/coze-studio/backend/infra/contract/imagex" "github.com/coze-dev/coze-studio/backend/infra/contract/imagex"
"github.com/coze-dev/coze-studio/backend/infra/contract/modelmgr" "github.com/coze-dev/coze-studio/backend/infra/contract/modelmgr"
"github.com/coze-dev/coze-studio/backend/infra/contract/storage" "github.com/coze-dev/coze-studio/backend/infra/contract/storage"
"github.com/coze-dev/coze-studio/backend/pkg/logs"
) )
type ServiceComponents struct { type ServiceComponents struct {
IDGen idgen.IDGenerator IDGen idgen.IDGenerator
DB *gorm.DB DB *gorm.DB
Cache *redis.Client Cache cache.Cmdable
DatabaseDomainSVC dbservice.Database DatabaseDomainSVC dbservice.Database
VariablesDomainSVC variables.Variables VariablesDomainSVC variables.Variables
PluginDomainSVC plugin.PluginService PluginDomainSVC plugin.PluginService

View File

@ -22,10 +22,9 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/redis/go-redis/v9"
"github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/developer_api" "github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/developer_api"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/pkg/errorx" "github.com/coze-dev/coze-studio/backend/pkg/errorx"
"github.com/coze-dev/coze-studio/backend/types/errno" "github.com/coze-dev/coze-studio/backend/types/errno"
) )
@ -53,7 +52,7 @@ func (sa *SingleAgentDraftDAO) UpdateDisplayInfo(ctx context.Context, userID int
func (sa *SingleAgentDraftDAO) GetDisplayInfo(ctx context.Context, userID, agentID int64) (*entity.AgentDraftDisplayInfo, error) { func (sa *SingleAgentDraftDAO) GetDisplayInfo(ctx context.Context, userID, agentID int64) (*entity.AgentDraftDisplayInfo, error) {
key := makeAgentDisplayInfoKey(userID, agentID) key := makeAgentDisplayInfoKey(userID, agentID)
data, err := sa.cacheClient.Get(ctx, key).Result() data, err := sa.cacheClient.Get(ctx, key).Result()
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
tabStatusDefault := developer_api.TabStatus_Default tabStatusDefault := developer_api.TabStatus_Default
return &entity.AgentDraftDisplayInfo{ return &entity.AgentDraftDisplayInfo{
AgentID: agentID, AgentID: agentID,

View File

@ -20,24 +20,23 @@ import (
"context" "context"
"strconv" "strconv"
"github.com/redis/go-redis/v9" "github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/pkg/errorx" "github.com/coze-dev/coze-studio/backend/pkg/errorx"
) )
func NewCountRepo(cli *redis.Client) *CounterImpl { func NewCountRepo(cli cache.Cmdable) *CounterImpl {
return &CounterImpl{ return &CounterImpl{
cacheClient: cli, cacheClient: cli,
} }
} }
type CounterImpl struct { type CounterImpl struct {
cacheClient *redis.Client cacheClient cache.Cmdable
} }
func (c *CounterImpl) Get(ctx context.Context, key string) (int64, error) { func (c *CounterImpl) Get(ctx context.Context, key string) (int64, error) {
val, err := c.cacheClient.Get(ctx, key).Result() val, err := c.cacheClient.Get(ctx, key).Result()
if err == redis.Nil { if err == cache.Nil {
return 0, nil return 0, nil
} }
if err != nil { if err != nil {

View File

@ -20,13 +20,13 @@ import (
"context" "context"
"errors" "errors"
"github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/singleagent" "github.com/coze-dev/coze-studio/backend/api/model/crossdomain/singleagent"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/internal/dal/model" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/internal/dal/query" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/internal/dal/query"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
"github.com/coze-dev/coze-studio/backend/pkg/errorx" "github.com/coze-dev/coze-studio/backend/pkg/errorx"
"github.com/coze-dev/coze-studio/backend/types/errno" "github.com/coze-dev/coze-studio/backend/types/errno"
@ -35,10 +35,10 @@ import (
type SingleAgentDraftDAO struct { type SingleAgentDraftDAO struct {
idGen idgen.IDGenerator idGen idgen.IDGenerator
dbQuery *query.Query dbQuery *query.Query
cacheClient *redis.Client cacheClient cache.Cmdable
} }
func NewSingleAgentDraftDAO(db *gorm.DB, idGen idgen.IDGenerator, cli *redis.Client) *SingleAgentDraftDAO { func NewSingleAgentDraftDAO(db *gorm.DB, idGen idgen.IDGenerator, cli cache.Cmdable) *SingleAgentDraftDAO {
query.SetDefault(db) query.SetDefault(db)
return &SingleAgentDraftDAO{ return &SingleAgentDraftDAO{

View File

@ -19,15 +19,15 @@ package repository
import ( import (
"context" "context"
"github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity"
"github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/internal/dal" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/internal/dal"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
) )
func NewSingleAgentRepo(db *gorm.DB, idGen idgen.IDGenerator, cli *redis.Client) SingleAgentDraftRepo { func NewSingleAgentRepo(db *gorm.DB, idGen idgen.IDGenerator, cli cache.Cmdable) SingleAgentDraftRepo {
return dal.NewSingleAgentDraftDAO(db, idGen, cli) return dal.NewSingleAgentDraftDAO(db, idGen, cli)
} }
@ -35,7 +35,7 @@ func NewSingleAgentVersionRepo(db *gorm.DB, idGen idgen.IDGenerator) SingleAgent
return dal.NewSingleAgentVersion(db, idGen) return dal.NewSingleAgentVersion(db, idGen)
} }
func NewCounterRepo(cli *redis.Client) CounterRepository { func NewCounterRepo(cli cache.Cmdable) CounterRepository {
return dal.NewCountRepo(cli) return dal.NewCountRepo(cli)
} }

View File

@ -21,16 +21,15 @@ import (
"errors" "errors"
"time" "time"
redisV9 "github.com/redis/go-redis/v9" "github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr" "github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
) )
type AppCache struct { type AppCache struct {
cacheCli *redisV9.Client cacheCli cache.Cmdable
} }
func NewAppCache(cacheCli *redisV9.Client) *AppCache { func NewAppCache(cacheCli cache.Cmdable) *AppCache {
return &AppCache{ return &AppCache{
cacheCli: cacheCli, cacheCli: cacheCli,
} }
@ -39,7 +38,7 @@ func NewAppCache(cacheCli *redisV9.Client) *AppCache {
func (a *AppCache) Get(ctx context.Context, key string) (value string, exist bool, err error) { func (a *AppCache) Get(ctx context.Context, key string) (value string, exist bool, err error) {
cmd := a.cacheCli.Get(ctx, key) cmd := a.cacheCli.Get(ctx, key)
if cmd.Err() != nil { if cmd.Err() != nil {
if errors.Is(cmd.Err(), redisV9.Nil) { if errors.Is(cmd.Err(), cache.Nil) {
return "", false, nil return "", false, nil
} }
return "", false, cmd.Err() return "", false, cmd.Err()

View File

@ -25,12 +25,12 @@ import (
"sync" "sync"
"time" "time"
redisV9 "github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/app/entity" "github.com/coze-dev/coze-studio/backend/domain/app/entity"
"github.com/coze-dev/coze-studio/backend/domain/app/internal/dal" "github.com/coze-dev/coze-studio/backend/domain/app/internal/dal"
"github.com/coze-dev/coze-studio/backend/domain/app/internal/dal/query" "github.com/coze-dev/coze-studio/backend/domain/app/internal/dal/query"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr" "github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
"github.com/coze-dev/coze-studio/backend/pkg/logs" "github.com/coze-dev/coze-studio/backend/pkg/logs"
@ -50,7 +50,7 @@ type appRepoImpl struct {
type APPRepoComponents struct { type APPRepoComponents struct {
IDGen idgen.IDGenerator IDGen idgen.IDGenerator
DB *gorm.DB DB *gorm.DB
CacheCli *redisV9.Client CacheCli cache.Cmdable
} }
func NewAPPRepo(components *APPRepoComponents) AppRepository { func NewAPPRepo(components *APPRepoComponents) AppRepository {

View File

@ -32,21 +32,19 @@ import (
"unicode/utf8" "unicode/utf8"
"github.com/bytedance/sonic" "github.com/bytedance/sonic"
redisV9 "github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/knowledge" "github.com/coze-dev/coze-studio/backend/api/model/crossdomain/knowledge"
knowledgeModel "github.com/coze-dev/coze-studio/backend/api/model/crossdomain/knowledge" knowledgeModel "github.com/coze-dev/coze-studio/backend/api/model/crossdomain/knowledge"
"github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/developer_api" "github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/developer_api"
"github.com/coze-dev/coze-studio/backend/application/base/ctxutil" "github.com/coze-dev/coze-studio/backend/application/base/ctxutil"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/repository"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/entity" "github.com/coze-dev/coze-studio/backend/domain/knowledge/entity"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/consts" "github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/consts"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/convert" "github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/convert"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model" "github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/events" "github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/events"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/processor/impl" "github.com/coze-dev/coze-studio/backend/domain/knowledge/processor/impl"
"github.com/coze-dev/coze-studio/backend/domain/knowledge/repository"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache" "github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/chatmodel" "github.com/coze-dev/coze-studio/backend/infra/contract/chatmodel"
"github.com/coze-dev/coze-studio/backend/infra/contract/document/nl2sql" "github.com/coze-dev/coze-studio/backend/infra/contract/document/nl2sql"
@ -1484,7 +1482,7 @@ func (k *knowledgeSVC) getObjectURL(ctx context.Context, uri string) (string, er
if err != nil { if err != nil {
return "", errorx.New(errno.ErrKnowledgeGetObjectURLFailCode, errorx.KV("msg", fmt.Sprintf("get object url failed, %v", err))) return "", errorx.New(errno.ErrKnowledgeGetObjectURLFailCode, errorx.KV("msg", fmt.Sprintf("get object url failed, %v", err)))
} }
if errors.Is(cmd.Err(), redisV9.Nil) { if errors.Is(cmd.Err(), cache.Nil) {
err = k.cacheCli.Set(ctx, uri, url, cacheTime*time.Second).Err() err = k.cacheCli.Set(ctx, uri, url, cacheTime*time.Second).Err()
if err != nil { if err != nil {
logs.CtxErrorf(ctx, "[getObjectURL] set cache failed, %v", err) logs.CtxErrorf(ctx, "[getObjectURL] set cache failed, %v", err)

View File

@ -32,6 +32,8 @@ import (
"github.com/tealeg/xlsx/v3" "github.com/tealeg/xlsx/v3"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/database" "github.com/coze-dev/coze-studio/backend/api/model/crossdomain/database"
"github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/bot_common" "github.com/coze-dev/coze-studio/backend/api/model/ocean/cloud/bot_common"
"github.com/coze-dev/coze-studio/backend/api/model/table" "github.com/coze-dev/coze-studio/backend/api/model/table"
@ -64,10 +66,10 @@ type databaseService struct {
onlineDAO repository.OnlineDAO onlineDAO repository.OnlineDAO
agentToDatabaseDAO repository.AgentToDatabaseDAO agentToDatabaseDAO repository.AgentToDatabaseDAO
storage storage.Storage storage storage.Storage
cache *redis.Client cache cache.Cmdable
} }
func NewService(rdb rdb.RDB, db *gorm.DB, generator idgen.IDGenerator, storage storage.Storage, cacheCli *redis.Client) Database { func NewService(rdb rdb.RDB, db *gorm.DB, generator idgen.IDGenerator, storage storage.Storage, cacheCli cache.Cmdable) Database {
return &databaseService{ return &databaseService{
rdb: rdb, rdb: rdb,
db: db, db: db,

View File

@ -21,16 +21,15 @@ import (
"errors" "errors"
"time" "time"
redisV9 "github.com/redis/go-redis/v9" "github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr" "github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
) )
type OAuthCache struct { type OAuthCache struct {
cacheCli *redisV9.Client cacheCli cache.Cmdable
} }
func NewOAuthCache(cacheCli *redisV9.Client) *OAuthCache { func NewOAuthCache(cacheCli cache.Cmdable) *OAuthCache {
return &OAuthCache{ return &OAuthCache{
cacheCli: cacheCli, cacheCli: cacheCli,
} }
@ -39,7 +38,7 @@ func NewOAuthCache(cacheCli *redisV9.Client) *OAuthCache {
func (o *OAuthCache) Get(ctx context.Context, key string) (value string, exist bool, err error) { func (o *OAuthCache) Get(ctx context.Context, key string) (value string, exist bool, err error) {
cmd := o.cacheCli.Get(ctx, key) cmd := o.cacheCli.Get(ctx, key)
if cmd.Err() != nil { if cmd.Err() != nil {
if errors.Is(cmd.Err(), redisV9.Nil) { if errors.Is(cmd.Err(), cache.Nil) {
return "", false, nil return "", false, nil
} }
return "", false, cmd.Err() return "", false, cmd.Err()

View File

@ -21,14 +21,13 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/redis/go-redis/v9"
"github.com/coze-dev/coze-studio/backend/domain/workflow/entity/vo" "github.com/coze-dev/coze-studio/backend/domain/workflow/entity/vo"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/types/errno" "github.com/coze-dev/coze-studio/backend/types/errno"
) )
type cancelSignalStoreImpl struct { type cancelSignalStoreImpl struct {
redis *redis.Client redis cache.Cmdable
} }
const workflowExecutionCancelStatusKey = "workflow:cancel:status:%d" const workflowExecutionCancelStatusKey = "workflow:cancel:status:%d"

View File

@ -23,13 +23,13 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/redis/go-redis/v9"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/workflow/entity" "github.com/coze-dev/coze-studio/backend/domain/workflow/entity"
"github.com/coze-dev/coze-studio/backend/domain/workflow/entity/vo" "github.com/coze-dev/coze-studio/backend/domain/workflow/entity/vo"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/model" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/query" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/query"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ptr" "github.com/coze-dev/coze-studio/backend/pkg/lang/ptr"
"github.com/coze-dev/coze-studio/backend/pkg/lang/slices" "github.com/coze-dev/coze-studio/backend/pkg/lang/slices"
"github.com/coze-dev/coze-studio/backend/pkg/lang/ternary" "github.com/coze-dev/coze-studio/backend/pkg/lang/ternary"
@ -40,7 +40,7 @@ import (
type executeHistoryStoreImpl struct { type executeHistoryStoreImpl struct {
query *query.Query query *query.Query
redis *redis.Client redis cache.Cmdable
} }
func (e *executeHistoryStoreImpl) CreateWorkflowExecution(ctx context.Context, execution *entity.WorkflowExecution) (err error) { func (e *executeHistoryStoreImpl) CreateWorkflowExecution(ctx context.Context, execution *entity.WorkflowExecution) (err error) {
@ -457,7 +457,7 @@ func (e *executeHistoryStoreImpl) loadNodeExecutionFromRedis(ctx context.Context
result, err := e.redis.Get(ctx, key).Result() result, err := e.redis.Get(ctx, key).Result()
if err != nil { if err != nil {
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
return nil return nil
} }
return vo.WrapError(errno.ErrRedisError, err) return vo.WrapError(errno.ErrRedisError, err)
@ -523,7 +523,7 @@ func (e *executeHistoryStoreImpl) GetTestRunLatestExeID(ctx context.Context, wfI
key := fmt.Sprintf(testRunLastExeKey, wfID, uID) key := fmt.Sprintf(testRunLastExeKey, wfID, uID)
exeIDStr, err := e.redis.Get(ctx, key).Result() exeIDStr, err := e.redis.Get(ctx, key).Result()
if err != nil { if err != nil {
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
return 0, nil return 0, nil
} }
return 0, vo.WrapError(errno.ErrRedisError, err) return 0, vo.WrapError(errno.ErrRedisError, err)
@ -548,7 +548,7 @@ func (e *executeHistoryStoreImpl) GetNodeDebugLatestExeID(ctx context.Context, w
key := fmt.Sprintf(nodeDebugLastExeKey, wfID, nodeID, uID) key := fmt.Sprintf(nodeDebugLastExeKey, wfID, nodeID, uID)
exeIDStr, err := e.redis.Get(ctx, key).Result() exeIDStr, err := e.redis.Get(ctx, key).Result()
if err != nil { if err != nil {
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
return 0, nil return 0, nil
} }
return 0, vo.WrapError(errno.ErrRedisError, err) return 0, vo.WrapError(errno.ErrRedisError, err)

View File

@ -22,16 +22,15 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/redis/go-redis/v9"
"github.com/coze-dev/coze-studio/backend/domain/workflow/entity" "github.com/coze-dev/coze-studio/backend/domain/workflow/entity"
"github.com/coze-dev/coze-studio/backend/domain/workflow/entity/vo" "github.com/coze-dev/coze-studio/backend/domain/workflow/entity/vo"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/pkg/sonic" "github.com/coze-dev/coze-studio/backend/pkg/sonic"
"github.com/coze-dev/coze-studio/backend/types/errno" "github.com/coze-dev/coze-studio/backend/types/errno"
) )
type interruptEventStoreImpl struct { type interruptEventStoreImpl struct {
redis *redis.Client redis cache.Cmdable
} }
const ( const (
@ -81,7 +80,7 @@ func (i *interruptEventStoreImpl) SaveInterruptEvents(ctx context.Context, wfExe
previousEventStr, err := i.redis.Get(ctx, previousResumedEventKey).Result() previousEventStr, err := i.redis.Get(ctx, previousResumedEventKey).Result()
if err != nil { if err != nil {
if !errors.Is(err, redis.Nil) { if !errors.Is(err, cache.Nil) {
return fmt.Errorf("failed to get previous resumed event for wfExeID %d: %w", wfExeID, err) return fmt.Errorf("failed to get previous resumed event for wfExeID %d: %w", wfExeID, err)
} }
} }
@ -154,7 +153,7 @@ func (i *interruptEventStoreImpl) GetFirstInterruptEvent(ctx context.Context, wf
eventJSON, err := i.redis.LIndex(ctx, listKey, 0).Result() eventJSON, err := i.redis.LIndex(ctx, listKey, 0).Result()
if err != nil { if err != nil {
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
return nil, false, nil // List is empty or key does not exist return nil, false, nil // List is empty or key does not exist
} }
return nil, false, fmt.Errorf("failed to get first interrupt event from Redis list for wfExeID %d: %w", wfExeID, err) return nil, false, fmt.Errorf("failed to get first interrupt event from Redis list for wfExeID %d: %w", wfExeID, err)
@ -203,7 +202,7 @@ func (i *interruptEventStoreImpl) PopFirstInterruptEvent(ctx context.Context, wf
eventJSON, err := i.redis.LPop(ctx, listKey).Result() eventJSON, err := i.redis.LPop(ctx, listKey).Result()
if err != nil { if err != nil {
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
return nil, false, nil // List is empty or key does not exist return nil, false, nil // List is empty or key does not exist
} }
return nil, false, vo.WrapError(errno.ErrRedisError, return nil, false, vo.WrapError(errno.ErrRedisError,
@ -227,7 +226,7 @@ func (i *interruptEventStoreImpl) ListInterruptEvents(ctx context.Context, wfExe
eventJSONs, err := i.redis.LRange(ctx, listKey, 0, -1).Result() eventJSONs, err := i.redis.LRange(ctx, listKey, 0, -1).Result()
if err != nil { if err != nil {
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
return nil, nil // List is empty or key does not exist return nil, nil // List is empty or key does not exist
} }
return nil, vo.WrapError(errno.ErrRedisError, return nil, vo.WrapError(errno.ErrRedisError,

View File

@ -25,7 +25,6 @@ import (
einoCompose "github.com/cloudwego/eino/compose" einoCompose "github.com/cloudwego/eino/compose"
"github.com/cloudwego/eino/schema" "github.com/cloudwego/eino/schema"
"github.com/redis/go-redis/v9"
"golang.org/x/exp/maps" "golang.org/x/exp/maps"
"gorm.io/gen" "gorm.io/gen"
"gorm.io/gen/field" "gorm.io/gen/field"
@ -41,6 +40,7 @@ import (
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/execute" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/execute"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/model" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/query" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo/dal/query"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
cm "github.com/coze-dev/coze-studio/backend/infra/contract/chatmodel" cm "github.com/coze-dev/coze-studio/backend/infra/contract/chatmodel"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
"github.com/coze-dev/coze-studio/backend/infra/contract/storage" "github.com/coze-dev/coze-studio/backend/infra/contract/storage"
@ -61,7 +61,7 @@ const (
type RepositoryImpl struct { type RepositoryImpl struct {
idgen.IDGenerator idgen.IDGenerator
query *query.Query query *query.Query
redis *redis.Client redis cache.Cmdable
tos storage.Storage tos storage.Storage
einoCompose.CheckPointStore einoCompose.CheckPointStore
workflow.InterruptEventStore workflow.InterruptEventStore
@ -70,7 +70,7 @@ type RepositoryImpl struct {
builtinModel cm.BaseChatModel builtinModel cm.BaseChatModel
} }
func NewRepository(idgen idgen.IDGenerator, db *gorm.DB, redis *redis.Client, tos storage.Storage, func NewRepository(idgen idgen.IDGenerator, db *gorm.DB, redis cache.Cmdable, tos storage.Storage,
cpStore einoCompose.CheckPointStore, chatModel cm.BaseChatModel) workflow.Repository { cpStore einoCompose.CheckPointStore, chatModel cm.BaseChatModel) workflow.Repository {
return &RepositoryImpl{ return &RepositoryImpl{
IDGenerator: idgen, IDGenerator: idgen,

View File

@ -24,7 +24,7 @@ import (
"time" "time"
einoCompose "github.com/cloudwego/eino/compose" einoCompose "github.com/cloudwego/eino/compose"
"github.com/redis/go-redis/v9"
"github.com/spf13/cast" "github.com/spf13/cast"
"golang.org/x/exp/maps" "golang.org/x/exp/maps"
"golang.org/x/sync/errgroup" "golang.org/x/sync/errgroup"
@ -39,6 +39,7 @@ import (
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/canvas/adaptor" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/canvas/adaptor"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/compose" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/compose"
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo" "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/chatmodel" "github.com/coze-dev/coze-studio/backend/infra/contract/chatmodel"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
"github.com/coze-dev/coze-studio/backend/infra/contract/storage" "github.com/coze-dev/coze-studio/backend/infra/contract/storage"
@ -67,7 +68,7 @@ func NewWorkflowService(repo workflow.Repository) workflow.Service {
} }
} }
func NewWorkflowRepository(idgen idgen.IDGenerator, db *gorm.DB, redis *redis.Client, tos storage.Storage, func NewWorkflowRepository(idgen idgen.IDGenerator, db *gorm.DB, redis cache.Cmdable, tos storage.Storage,
cpStore einoCompose.CheckPointStore, chatModel chatmodel.BaseChatModel) workflow.Repository { cpStore einoCompose.CheckPointStore, chatModel chatmodel.BaseChatModel) workflow.Repository {
return repo.NewRepository(idgen, db, redis, tos, cpStore, chatModel) return repo.NewRepository(idgen, db, redis, tos, cpStore, chatModel)
} }

View File

@ -21,3 +21,5 @@ import (
) )
type Cmdable = redis.Cmdable type Cmdable = redis.Cmdable
const Nil = redis.Nil

View File

@ -24,10 +24,12 @@ import (
"github.com/cloudwego/eino/compose" "github.com/cloudwego/eino/compose"
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache"
) )
type redisStore struct { type redisStore struct {
client *redis.Client client cache.Cmdable
} }
const ( const (
@ -38,7 +40,7 @@ const (
func (r *redisStore) Get(ctx context.Context, checkPointID string) ([]byte, bool, error) { func (r *redisStore) Get(ctx context.Context, checkPointID string) ([]byte, bool, error) {
v, err := r.client.Get(ctx, fmt.Sprintf(checkpointKeyTpl, checkPointID)).Bytes() v, err := r.client.Get(ctx, fmt.Sprintf(checkpointKeyTpl, checkPointID)).Bytes()
if err != nil { if err != nil {
if errors.Is(err, redis.Nil) { if errors.Is(err, cache.Nil) {
return nil, false, nil return nil, false, nil
} }
return nil, false, err return nil, false, err

View File

@ -22,8 +22,6 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/redis/go-redis/v9"
"github.com/coze-dev/coze-studio/backend/infra/contract/cache" "github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/document/progressbar" "github.com/coze-dev/coze-studio/backend/infra/contract/document/progressbar"
"github.com/coze-dev/coze-studio/backend/pkg/lang/conv" "github.com/coze-dev/coze-studio/backend/pkg/lang/conv"
@ -90,7 +88,7 @@ func (p *ProgressBarImpl) GetProgress(ctx context.Context) (percent int, remainS
err error err error
) )
errMsg, err = p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarErrMsgRedisKey, p.PrimaryKeyID)).Result() errMsg, err = p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarErrMsgRedisKey, p.PrimaryKeyID)).Result()
if err == redis.Nil { if err == cache.Nil {
errMsg = "" errMsg = ""
} else if err != nil { } else if err != nil {
return ProcessDone, 0, err.Error() return ProcessDone, 0, err.Error()
@ -99,7 +97,7 @@ func (p *ProgressBarImpl) GetProgress(ctx context.Context) (percent int, remainS
return ProcessDone, 0, errMsg return ProcessDone, 0, errMsg
} }
totalNumStr, err := p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarTotalNumRedisKey, p.PrimaryKeyID)).Result() totalNumStr, err := p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarTotalNumRedisKey, p.PrimaryKeyID)).Result()
if err == redis.Nil || len(totalNumStr) == 0 { if err == cache.Nil || len(totalNumStr) == 0 {
totalNum = ptr.Of(int64(0)) totalNum = ptr.Of(int64(0))
} else if err != nil { } else if err != nil {
return ProcessDone, 0, err.Error() return ProcessDone, 0, err.Error()
@ -112,7 +110,7 @@ func (p *ProgressBarImpl) GetProgress(ctx context.Context) (percent int, remainS
} }
} }
processedNumStr, err := p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarProcessedNumRedisKey, p.PrimaryKeyID)).Result() processedNumStr, err := p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarProcessedNumRedisKey, p.PrimaryKeyID)).Result()
if err == redis.Nil || len(processedNumStr) == 0 { if err == cache.Nil || len(processedNumStr) == 0 {
processedNum = ptr.Of(int64(0)) processedNum = ptr.Of(int64(0))
} else if err != nil { } else if err != nil {
return ProcessDone, 0, err.Error() return ProcessDone, 0, err.Error()
@ -128,7 +126,7 @@ func (p *ProgressBarImpl) GetProgress(ctx context.Context) (percent int, remainS
return ProcessInit, DefaultProcessTime, "" return ProcessInit, DefaultProcessTime, ""
} }
startTimeStr, err := p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarStartTimeRedisKey, p.PrimaryKeyID)).Result() startTimeStr, err := p.CacheCli.Get(ctx, fmt.Sprintf(ProgressBarStartTimeRedisKey, p.PrimaryKeyID)).Result()
if err == redis.Nil || len(startTimeStr) == 0 { if err == cache.Nil || len(startTimeStr) == 0 {
startTime = ptr.Of(int64(0)) startTime = ptr.Of(int64(0))
} else if err != nil { } else if err != nil {
return ProcessDone, 0, err.Error() return ProcessDone, 0, err.Error()

View File

@ -21,7 +21,7 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/redis/go-redis/v9" "github.com/coze-dev/coze-studio/backend/infra/contract/cache"
"github.com/coze-dev/coze-studio/backend/infra/contract/idgen" "github.com/coze-dev/coze-studio/backend/infra/contract/idgen"
) )
@ -33,7 +33,7 @@ const (
type IDGenerator = idgen.IDGenerator type IDGenerator = idgen.IDGenerator
func New(client *redis.Client) (idgen.IDGenerator, error) { func New(client cache.Cmdable) (idgen.IDGenerator, error) {
// Initialization code. // Initialization code.
return &idGenImpl{ return &idGenImpl{
cli: client, cli: client,
@ -41,7 +41,7 @@ func New(client *redis.Client) (idgen.IDGenerator, error) {
} }
type idGenImpl struct { type idGenImpl struct {
cli *redis.Client cli cache.Cmdable
namespace string namespace string
} }

View File

@ -21,15 +21,15 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/redis/go-redis/v9" "github.com/coze-dev/coze-studio/backend/infra/contract/cache"
) )
type JsonCache[T any] struct { type JsonCache[T any] struct {
cache *redis.Client cache cache.Cmdable
prefix string prefix string
} }
func New[T any](prefix string, cache *redis.Client) *JsonCache[T] { func New[T any](prefix string, cache cache.Cmdable) *JsonCache[T] {
return &JsonCache[T]{ return &JsonCache[T]{
prefix: prefix, prefix: prefix,
cache: cache, cache: cache,
@ -59,7 +59,7 @@ func (g *JsonCache[T]) Get(ctx context.Context, k string) (*T, error) {
var obj T var obj T
data, err := g.cache.Get(ctx, key).Result() data, err := g.cache.Get(ctx, key).Result()
if err == redis.Nil { if err == cache.Nil {
return &obj, nil return &obj, nil
} }