123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package helper
- import (
- "strings"
- "github.com/langgenius/dify-plugin-daemon/internal/db"
- "github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
- "github.com/langgenius/dify-plugin-daemon/internal/types/models"
- "github.com/langgenius/dify-plugin-daemon/internal/utils/cache"
- )
- func CombinedGetPluginDeclaration(
- plugin_unique_identifier plugin_entities.PluginUniqueIdentifier,
- tenant_id string,
- runtime_type plugin_entities.PluginRuntimeType,
- ) (*plugin_entities.PluginDeclaration, error) {
- return cache.AutoGetWithGetter(
- strings.Join(
- []string{
- string(runtime_type),
- tenant_id,
- plugin_unique_identifier.String(),
- },
- ":",
- ),
- func() (*plugin_entities.PluginDeclaration, error) {
- if runtime_type != plugin_entities.PLUGIN_RUNTIME_TYPE_REMOTE {
- declaration, err := db.GetOne[models.PluginDeclaration](
- db.Equal("plugin_unique_identifier", plugin_unique_identifier.String()),
- )
- if err != nil && err != db.ErrDatabaseNotFound {
- return nil, err
- }
- if err != nil {
- return nil, err
- }
- return &declaration.Declaration, nil
- } else {
- // try to fetch the declaration from plugin if it's remote
- plugin, err := db.GetOne[models.Plugin](
- db.Equal("unique_identifier", plugin_unique_identifier.String()),
- db.Equal("install_type", string(plugin_entities.PLUGIN_RUNTIME_TYPE_REMOTE)),
- db.Equal("tenant_id", tenant_id),
- )
- if err != nil && err != db.ErrDatabaseNotFound {
- return nil, err
- }
- if err != nil {
- return nil, err
- }
- return &plugin.Declaration, nil
- }
- },
- )
- }
|