resources.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. package drivers
  2. // DriverResource 描述驱动的可展示资源(如 logo、显示名等)
  3. type DriverResource struct {
  4. DBType string `json:"dbType"`
  5. Version string `json:"version"`
  6. DisplayName string `json:"displayName,omitempty"`
  7. // LogoPath 为可通过静态服务器访问的相对路径,例如 "/static/drivers/mysql/v8/logo.png"
  8. LogoPath string `json:"logoPath,omitempty"`
  9. Extras map[string]string `json:"extras,omitempty"`
  10. }
  11. var resources = map[string]map[string]DriverResource{} // dbType -> version -> resource
  12. // RegisterDriverResource 注册驱动资源信息,通常在驱动 init 中调用。
  13. func RegisterDriverResource(dbType, version string, res DriverResource) {
  14. if _, ok := resources[dbType]; !ok {
  15. resources[dbType] = map[string]DriverResource{}
  16. }
  17. resources[dbType][version] = res
  18. }
  19. // GetDriverResources 返回已注册的驱动资源列表(去平铺)
  20. func GetDriverResources() []DriverResource {
  21. out := []DriverResource{}
  22. for dbt, versions := range resources {
  23. for ver, r := range versions {
  24. r.DBType = dbt
  25. r.Version = ver
  26. out = append(out, r)
  27. }
  28. }
  29. return out
  30. }