diff --git a/internal/database/migrations/sqlite/0003_uniq_id.up.sql b/internal/database/migrations/sqlite/0003_uniq_id.up.sql new file mode 100644 index 0000000..982b3ff --- /dev/null +++ b/internal/database/migrations/sqlite/0003_uniq_id.up.sql @@ -0,0 +1,22 @@ +-- Create a temporary table +CREATE TABLE IF NOT EXISTS bookmark_temp( + id INTEGER PRIMARY KEY AUTOINCREMENT, + url TEXT NOT NULL, + title TEXT NOT NULL, + excerpt TEXT NOT NULL DEFAULT "", + author TEXT NOT NULL DEFAULT "", + public INTEGER NOT NULL DEFAULT 0, + modified TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + has_content BOOLEAN DEFAULT FALSE NOT NULL, + CONSTRAINT bookmark_url_UNIQUE UNIQUE(url) +); + +-- Copy data from the original table to the temporary table +INSERT INTO bookmark_temp (id, url, title, excerpt, author, public, modified, has_content) +SELECT id, url, title, excerpt, author, public, modified, has_content FROM bookmark; + +-- Drop the original table +DROP TABLE bookmark; + +-- Rename the temporary table to the original table name +ALTER TABLE bookmark_temp RENAME TO bookmark; diff --git a/internal/database/sqlite.go b/internal/database/sqlite.go index 4cc117b..e759d84 100644 --- a/internal/database/sqlite.go +++ b/internal/database/sqlite.go @@ -59,6 +59,7 @@ var sqliteMigrations = []migration{ return nil }), newFileMigration("0.3.0", "0.4.0", "sqlite/0002_denormalize_content"), + newFileMigration("0.4.0", "0.5.0", "sqlite/0003_uniq_id"), } // SQLiteDatabase is implementation of Database interface