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