redis.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package helper
  2. import (
  3. "github.com/langgenius/dify-plugin-daemon/internal/db"
  4. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
  5. "github.com/langgenius/dify-plugin-daemon/internal/types/models"
  6. "github.com/langgenius/dify-plugin-daemon/internal/utils/cache"
  7. )
  8. func CombinedGetPluginDeclaration(plugin_unique_identifier plugin_entities.PluginUniqueIdentifier) (*plugin_entities.PluginDeclaration, error) {
  9. return cache.AutoGetWithGetter(
  10. plugin_unique_identifier.String(),
  11. func() (*plugin_entities.PluginDeclaration, error) {
  12. declaration, err := db.GetOne[models.PluginDeclaration](
  13. db.Equal("plugin_unique_identifier", plugin_unique_identifier.String()),
  14. )
  15. if err != nil && err != db.ErrDatabaseNotFound {
  16. return nil, err
  17. }
  18. if err == nil {
  19. return &declaration.Declaration, nil
  20. }
  21. model, err := db.GetOne[models.Plugin](
  22. db.Equal("plugin_unique_identifier", plugin_unique_identifier.String()),
  23. )
  24. if err != nil {
  25. return nil, err
  26. }
  27. return &model.Declaration, nil
  28. },
  29. )
  30. }