Skip to content

Commit b8badb0

Browse files
committed
feat: bugs fixed
1 parent 4bdc2bf commit b8badb0

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

src/repository/repo.go

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,29 @@ type InMemoryToolRepository struct {
2929
mu sync.RWMutex // for concurrent access
3030
}
3131

32-
func (r InMemoryToolRepository) GetProvider(ctx context.Context, providerName string) (*Provider, error) {
32+
func (r *InMemoryToolRepository) GetProvider(ctx context.Context, providerName string) (*Provider, error) {
33+
r.mu.RLock()
34+
defer r.mu.RUnlock()
3335
provider, ok := r.Providers[providerName]
3436
if !ok {
3537
return nil, nil
3638
}
3739
return &provider, nil
3840
}
3941

40-
func (r InMemoryToolRepository) GetProviders(ctx context.Context) ([]Provider, error) {
42+
func (r *InMemoryToolRepository) GetProviders(ctx context.Context) ([]Provider, error) {
43+
r.mu.RLock()
44+
defer r.mu.RUnlock()
4145
var providers []Provider
4246
for _, p := range r.Providers {
4347
providers = append(providers, p)
4448
}
4549
return providers, nil
4650
}
4751

48-
func (r InMemoryToolRepository) GetTool(ctx context.Context, toolName string) (*Tool, error) {
52+
func (r *InMemoryToolRepository) GetTool(ctx context.Context, toolName string) (*Tool, error) {
53+
r.mu.RLock()
54+
defer r.mu.RUnlock()
4955
for _, tools := range r.Tools {
5056
for _, tool := range tools {
5157
if tool.Name == toolName {
@@ -56,23 +62,29 @@ func (r InMemoryToolRepository) GetTool(ctx context.Context, toolName string) (*
5662
return nil, nil
5763
}
5864

59-
func (r InMemoryToolRepository) GetTools(ctx context.Context) ([]Tool, error) {
65+
func (r *InMemoryToolRepository) GetTools(ctx context.Context) ([]Tool, error) {
66+
r.mu.RLock()
67+
defer r.mu.RUnlock()
6068
var all []Tool
6169
for _, tools := range r.Tools {
6270
all = append(all, tools...)
6371
}
6472
return all, nil
6573
}
6674

67-
func (r InMemoryToolRepository) GetToolsByProvider(ctx context.Context, providerName string) ([]Tool, error) {
75+
func (r *InMemoryToolRepository) GetToolsByProvider(ctx context.Context, providerName string) ([]Tool, error) {
76+
r.mu.RLock()
77+
defer r.mu.RUnlock()
6878
tools, ok := r.Tools[providerName]
6979
if !ok {
7080
return nil, fmt.Errorf("no tools found for provider %s", providerName)
7181
}
7282
return tools, nil
7383
}
7484

75-
func (r InMemoryToolRepository) RemoveProvider(ctx context.Context, providerName string) error {
85+
func (r *InMemoryToolRepository) RemoveProvider(ctx context.Context, providerName string) error {
86+
r.mu.Lock()
87+
defer r.mu.Unlock()
7688
if _, ok := r.Providers[providerName]; !ok {
7789
return fmt.Errorf("provider not found: %s", providerName)
7890
}
@@ -81,7 +93,9 @@ func (r InMemoryToolRepository) RemoveProvider(ctx context.Context, providerName
8193
return nil
8294
}
8395

84-
func (r InMemoryToolRepository) RemoveTool(ctx context.Context, toolName string) error {
96+
func (r *InMemoryToolRepository) RemoveTool(ctx context.Context, toolName string) error {
97+
r.mu.Lock()
98+
defer r.mu.Unlock()
8599
for providerName, tools := range r.Tools {
86100
for i, tool := range tools {
87101
if tool.Name == toolName {
@@ -99,6 +113,8 @@ func (r *InMemoryToolRepository) SaveProviderWithTools(ctx context.Context, prov
99113
return ctx.Err()
100114
default:
101115
}
116+
r.mu.Lock()
117+
defer r.mu.Unlock()
102118
var providerName string
103119
switch p := provider.(type) {
104120
case *CliProvider:

0 commit comments

Comments
 (0)