chore: add visibility migrate scripts

This commit is contained in:
Steven 2024-09-01 08:40:16 +08:00
parent f276c979fa
commit 3937abb17b
5 changed files with 108 additions and 4 deletions

View File

@ -0,0 +1,11 @@
ALTER TABLE shortcut DROP CONSTRAINT IF EXISTS shortcut_visibility_check;
ALTER TABLE shortcut ALTER COLUMN visibility SET DEFAULT 'WORKSPACE';
UPDATE shortcut SET visibility = 'WORKSPACE' WHERE visibility = 'PRIVATE';
ALTER TABLE collection DROP CONSTRAINT IF EXISTS collection_visibility_check;
ALTER TABLE collection ALTER COLUMN visibility SET DEFAULT 'WORKSPACE';
UPDATE collection SET visibility = 'WORKSPACE' WHERE visibility = 'PRIVATE';

View File

@ -0,0 +1,90 @@
UPDATE shortcut SET visibility = 'WORKSPACE' WHERE visibility = 'PRIVATE';
ALTER TABLE shortcut RENAME TO shortcut_old;
CREATE TABLE shortcut (
id INTEGER PRIMARY KEY AUTOINCREMENT,
creator_id INTEGER NOT NULL,
created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
updated_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
row_status TEXT NOT NULL CHECK (row_status IN ('NORMAL', 'ARCHIVED')) DEFAULT 'NORMAL',
name TEXT NOT NULL UNIQUE,
link TEXT NOT NULL,
title TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
visibility TEXT NOT NULL DEFAULT 'WORKSPACE',
tag TEXT NOT NULL DEFAULT '',
og_metadata TEXT NOT NULL DEFAULT '{}'
);
INSERT INTO shortcut (
id,
creator_id,
created_ts,
updated_ts,
row_status,
name,
link,
title,
description,
visibility,
tag,
og_metadata
)
SELECT
id,
creator_id,
created_ts,
updated_ts,
row_status,
name,
link,
title,
description,
visibility,
tag,
og_metadata
FROM shortcut_old;
DROP TABLE shortcut_old;
UPDATE collection SET visibility = 'WORKSPACE' WHERE visibility = 'PRIVATE';
ALTER TABLE collection RENAME TO collection_old;
CREATE TABLE collection (
id INTEGER PRIMARY KEY AUTOINCREMENT,
creator_id INTEGER NOT NULL,
created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
updated_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
name TEXT NOT NULL UNIQUE,
title TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
shortcut_ids INTEGER[] NOT NULL,
visibility TEXT NOT NULL DEFAULT 'WORKSPACE'
);
INSERT INTO collection (
id,
creator_id,
created_ts,
updated_ts,
name,
title,
description,
shortcut_ids,
visibility
)
SELECT
id,
creator_id,
created_ts,
updated_ts,
name,
title,
description,
shortcut_ids,
visibility
FROM collection_old;
DROP TABLE collection_old;

View File

@ -263,13 +263,17 @@ func (s *Store) normalizedMigrationHistoryList(ctx context.Context) error {
sort.Sort(common.SortVersion(versions))
latestVersion := versions[len(versions)-1]
latestMinorVersion := common.GetMinorVersion(latestVersion)
// If the latest version is greater than or equal to 1.0, the migration history is already normalized.
if common.IsVersionGreaterOrEqualThan(latestMinorVersion, "1.0") {
return nil
}
schemaVersionMap := map[string]string{}
filePaths, err := fs.Glob(migrationFS, fmt.Sprintf("%s*/*.sql", s.getMigrationBasePath()))
if err != nil {
return errors.Wrap(err, "failed to read migration files")
}
sort.Strings(filePaths)
schemaVersionMap := map[string]string{}
for _, filePath := range filePaths {
fileSchemaVersion, err := s.getSchemaVersionOfMigrateScript(filePath)
if err != nil {
@ -283,7 +287,6 @@ func (s *Store) normalizedMigrationHistoryList(ctx context.Context) error {
return errors.Wrap(err, "failed to get current schema version")
}
schemaVersionMap[common.GetMinorVersion(currentSchemaVersion)] = currentSchemaVersion
latestSchemaVersion := schemaVersionMap[latestMinorVersion]
if latestSchemaVersion == "" {
return errors.Errorf("latest schema version not found")

View File

@ -13,5 +13,5 @@ func TestGetCurrentSchemaVersion(t *testing.T) {
currentSchemaVersion, err := ts.GetCurrentSchemaVersion()
require.NoError(t, err)
require.Equal(t, "1.0.0", currentSchemaVersion)
require.Equal(t, "1.0.1", currentSchemaVersion)
}

View File

@ -32,7 +32,7 @@ func GetTestingProfile(t *testing.T) *profile.Profile {
// Get a temporary directory for the test data.
dir := t.TempDir()
mode := "dev"
mode := "prod"
port := getUnusedPort()
driver := getDriverFromEnv()
dsn := os.Getenv("DSN")