mirror of
https://github.com/usememos/memos.git
synced 2025-02-20 21:30:55 +01:00
45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
|
package store
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"path/filepath"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/pkg/errors"
|
||
|
)
|
||
|
|
||
|
// MigrateResourceInternalPath migrates resource internal path from absolute path to relative path.
|
||
|
func (s *Store) MigrateResourceInternalPath(ctx context.Context) error {
|
||
|
resources, err := s.ListResources(ctx, &FindResource{})
|
||
|
if err != nil {
|
||
|
return errors.Wrap(err, "failed to list resources")
|
||
|
}
|
||
|
|
||
|
for _, resource := range resources {
|
||
|
if resource.InternalPath == "" {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
internalPath := resource.InternalPath
|
||
|
if filepath.IsAbs(internalPath) {
|
||
|
if !strings.HasPrefix(internalPath, s.Profile.Data) {
|
||
|
// Invalid internal path, skip.
|
||
|
continue
|
||
|
}
|
||
|
internalPath = strings.TrimPrefix(internalPath, s.Profile.Data)
|
||
|
for strings.HasPrefix(internalPath, "/") {
|
||
|
internalPath = strings.TrimPrefix(internalPath, "/")
|
||
|
}
|
||
|
_, err := s.UpdateResource(ctx, &UpdateResource{
|
||
|
ID: resource.ID,
|
||
|
InternalPath: &internalPath,
|
||
|
})
|
||
|
if err != nil {
|
||
|
return errors.Wrap(err, "failed to update resource")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|