fix: type-switch capture, nil guard, LastInsertId error check

Three defensive fixes: 1) whatsapp_native - use type-switch capture instead of redundant unchecked assertion 2) config - add nil receiver guard to FilterSensitiveData 3) seahorse/store - check LastInsertId error in 3 locations
This commit is contained in:
程智超0668000959
2026-06-06 15:35:26 +08:00
parent 89ee8f1b39
commit 4752a67a7c
3 changed files with 17 additions and 5 deletions
@@ -269,9 +269,9 @@ func (c *WhatsAppNativeChannel) Stop(ctx context.Context) error {
}
func (c *WhatsAppNativeChannel) eventHandler(evt any) {
switch evt.(type) {
switch v := evt.(type) {
case *events.Message:
c.handleIncoming(evt.(*events.Message))
c.handleIncoming(v)
case *events.Disconnected:
logger.InfoCF("whatsapp", "WhatsApp disconnected, will attempt reconnection", nil)
c.reconnectMu.Lock()
+3
View File
@@ -194,6 +194,9 @@ type ExposePath struct {
// Uses strings.Replacer for O(n+m) performance (computed once per SecurityConfig).
// Short content (below FilterMinLength) is returned unchanged for performance.
func (c *Config) FilterSensitiveData(content string) string {
if c == nil {
return content
}
// Check if filtering is enabled (default: true)
if !c.Tools.IsFilterSensitiveDataEnabled() {
return content
+12 -3
View File
@@ -56,7 +56,10 @@ func (s *Store) GetOrCreateConversation(ctx context.Context, sessionKey string)
}
return nil, fmt.Errorf("create conversation: %w", err)
}
id, _ := result.LastInsertId()
id, err := result.LastInsertId()
if err != nil {
return nil, fmt.Errorf("get last insert id: %w", err)
}
return &Conversation{
ConversationID: id,
SessionKey: sessionKey,
@@ -193,7 +196,10 @@ func (s *Store) AddMessageWithReasoning(
if err != nil {
return nil, fmt.Errorf("add message: %w", err)
}
id, _ := result.LastInsertId()
id, err := result.LastInsertId()
if err != nil {
return nil, fmt.Errorf("get last insert id: %w", err)
}
return &Message{
ID: id,
ConversationID: convID,
@@ -282,7 +288,10 @@ func (s *Store) AddMessageWithPartsAndReasoning(
if err != nil {
return nil, fmt.Errorf("add message: %w", err)
}
msgID, _ := result.LastInsertId()
msgID, err := result.LastInsertId()
if err != nil {
return nil, fmt.Errorf("get last insert id: %w", err)
}
for i, p := range parts {
_, err = tx.ExecContext(