memos/store/migration/mysql/LATEST.sql
Steven 0610257562 refactor(store): remove deprecated migration_history table and backward compatibility code
Complete removal of migration_history system in favor of instance_setting based schema versioning.

Changes:
- Remove migration_history table creation from all LATEST.sql files
- Delete all migration_history model and implementation files (~300 lines)
- Remove FindMigrationHistoryList and UpsertMigrationHistory from Driver interface
- Replace complex backward compatibility functions with simple version check
- Update health check to use instance_setting instead of migration_history
- Simplify checkMinimumUpgradeVersion to detect pre-v0.22 installations

Breaking change:
Users on versions < v0.22.0 (May 2024) must upgrade to v0.25.x first before upgrading to this version.
Clear error message with upgrade instructions will be shown for old installations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 22:54:30 +08:00

115 lines
3.3 KiB
SQL

-- system_setting
CREATE TABLE `system_setting` (
`name` VARCHAR(256) NOT NULL PRIMARY KEY,
`value` LONGTEXT NOT NULL,
`description` TEXT NOT NULL
);
-- user
CREATE TABLE `user` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`created_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`row_status` VARCHAR(256) NOT NULL DEFAULT 'NORMAL',
`username` VARCHAR(256) NOT NULL UNIQUE,
`role` VARCHAR(256) NOT NULL DEFAULT 'USER',
`email` VARCHAR(256) NOT NULL DEFAULT '',
`nickname` VARCHAR(256) NOT NULL DEFAULT '',
`password_hash` VARCHAR(256) NOT NULL,
`avatar_url` LONGTEXT NOT NULL,
`description` VARCHAR(256) NOT NULL DEFAULT ''
);
-- user_setting
CREATE TABLE `user_setting` (
`user_id` INT NOT NULL,
`key` VARCHAR(256) NOT NULL,
`value` LONGTEXT NOT NULL,
UNIQUE(`user_id`,`key`)
);
-- memo
CREATE TABLE `memo` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`uid` VARCHAR(256) NOT NULL UNIQUE,
`creator_id` INT NOT NULL,
`created_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`row_status` VARCHAR(256) NOT NULL DEFAULT 'NORMAL',
`content` TEXT NOT NULL,
`visibility` VARCHAR(256) NOT NULL DEFAULT 'PRIVATE',
`pinned` BOOLEAN NOT NULL DEFAULT FALSE,
`payload` JSON NOT NULL
);
-- memo_organizer
CREATE TABLE `memo_organizer` (
`memo_id` INT NOT NULL,
`user_id` INT NOT NULL,
`pinned` INT NOT NULL DEFAULT '0',
UNIQUE(`memo_id`,`user_id`)
);
-- memo_relation
CREATE TABLE `memo_relation` (
`memo_id` INT NOT NULL,
`related_memo_id` INT NOT NULL,
`type` VARCHAR(256) NOT NULL,
UNIQUE(`memo_id`,`related_memo_id`,`type`)
);
-- resource
CREATE TABLE `resource` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`uid` VARCHAR(256) NOT NULL UNIQUE,
`creator_id` INT NOT NULL,
`created_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`filename` TEXT NOT NULL,
`blob` MEDIUMBLOB,
`type` VARCHAR(256) NOT NULL DEFAULT '',
`size` INT NOT NULL DEFAULT '0',
`memo_id` INT DEFAULT NULL,
`storage_type` VARCHAR(256) NOT NULL DEFAULT '',
`reference` TEXT NOT NULL DEFAULT (''),
`payload` TEXT NOT NULL
);
-- activity
CREATE TABLE `activity` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`creator_id` INT NOT NULL,
`created_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`type` VARCHAR(256) NOT NULL DEFAULT '',
`level` VARCHAR(256) NOT NULL DEFAULT 'INFO',
`payload` TEXT NOT NULL
);
-- idp
CREATE TABLE `idp` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` TEXT NOT NULL,
`type` TEXT NOT NULL,
`identifier_filter` VARCHAR(256) NOT NULL DEFAULT '',
`config` TEXT NOT NULL
);
-- inbox
CREATE TABLE `inbox` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`created_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`sender_id` INT NOT NULL,
`receiver_id` INT NOT NULL,
`status` TEXT NOT NULL,
`message` TEXT NOT NULL
);
-- reaction
CREATE TABLE `reaction` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`created_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`creator_id` INT NOT NULL,
`content_id` VARCHAR(256) NOT NULL,
`reaction_type` VARCHAR(256) NOT NULL,
UNIQUE(`creator_id`,`content_id`,`reaction_type`)
);