mirror of https://github.com/usememos/memos
chore: update resource internal path migrator
parent
0f8bfb6328
commit
c797099950
@ -1,19 +0,0 @@
|
|||||||
-- Make resource internal_path relative (to MEMOS_DATA) and replace backslash with slash
|
|
||||||
-- This is a best-effort approach, but even if it fails, it won't break assets from loading
|
|
||||||
UPDATE resource
|
|
||||||
SET
|
|
||||||
internal_path = REPLACE (internal_path, '\\', '/')
|
|
||||||
WHERE
|
|
||||||
internal_path LIKE '%assets\\\%';
|
|
||||||
|
|
||||||
UPDATE resource
|
|
||||||
SET
|
|
||||||
internal_path = REPLACE (
|
|
||||||
internal_path,
|
|
||||||
SUBSTR (
|
|
||||||
internal_path,
|
|
||||||
1,
|
|
||||||
INSTR (internal_path, '/assets')
|
|
||||||
),
|
|
||||||
''
|
|
||||||
);
|
|
@ -1,19 +0,0 @@
|
|||||||
-- Make resource internal_path relative (to MEMOS_DATA) and replace backslash with slash
|
|
||||||
-- This is a best-effort approach, but even if it fails, it won't break assets from loading
|
|
||||||
UPDATE resource
|
|
||||||
SET
|
|
||||||
internal_path = REPLACE (internal_path, '\', '/')
|
|
||||||
WHERE
|
|
||||||
internal_path LIKE '%assets\\%';
|
|
||||||
|
|
||||||
UPDATE resource
|
|
||||||
SET
|
|
||||||
internal_path = REPLACE (
|
|
||||||
internal_path,
|
|
||||||
SUBSTRING(
|
|
||||||
internal_path
|
|
||||||
FROM
|
|
||||||
1 FOR POSITION('/assets' IN internal_path)
|
|
||||||
),
|
|
||||||
''
|
|
||||||
);
|
|
@ -1,19 +0,0 @@
|
|||||||
-- Make resource internal_path relative (to MEMOS_DATA) and replace backslash with slash
|
|
||||||
-- This is a best-effort approach, but even if it fails, it won't break assets from loading
|
|
||||||
UPDATE resource
|
|
||||||
SET
|
|
||||||
internal_path = REPLACE (internal_path, '\', '/')
|
|
||||||
WHERE
|
|
||||||
internal_path LIKE '%assets\%';
|
|
||||||
|
|
||||||
UPDATE resource
|
|
||||||
SET
|
|
||||||
internal_path = REPLACE (
|
|
||||||
internal_path,
|
|
||||||
SUBSTR (
|
|
||||||
internal_path,
|
|
||||||
1,
|
|
||||||
INSTR (internal_path, '/assets')
|
|
||||||
),
|
|
||||||
''
|
|
||||||
);
|
|
@ -0,0 +1,44 @@
|
|||||||
|
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
|
||||||
|
}
|
Loading…
Reference in New Issue