You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

50 lines
2.6 KiB

-- 1. 添加 auth 相关字段到 users 表
CREATE TABLE `users_new` (
`id` integer PRIMARY KEY NOT NULL,
`username` text NOT NULL,
`email` text,
`nickname` text,
`password` text NOT NULL,
`avatar` text,
`role` text DEFAULT 'user' NOT NULL,
`status` text DEFAULT 'active' NOT NULL,
`public_slug` text,
`bio_markdown` text,
`bio_visibility` text DEFAULT 'private' NOT NULL,
`social_links_json` text DEFAULT '[]' NOT NULL,
`avatar_visibility` text DEFAULT 'private' NOT NULL,
`discover_visible` integer DEFAULT true NOT NULL,
`discover_location` text,
`discover_show_location` integer DEFAULT false NOT NULL,
`created_at` integer DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer)) NOT NULL,
`updated_at` integer DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer)) NOT NULL,
`email_verified` integer DEFAULT false NOT NULL,
`password_history` text DEFAULT '[]' NOT NULL,
`failed_login_attempts` integer DEFAULT 0 NOT NULL,
`lockout_until` integer,
`last_login_at` integer,
`last_login_ip` text
);
--> statement-breakpoint
INSERT INTO `users_new` (`id`, `username`, `email`, `nickname`, `password`, `avatar`, `role`, `status`, `public_slug`, `bio_markdown`, `bio_visibility`, `social_links_json`, `avatar_visibility`, `discover_visible`, `discover_location`, `discover_show_location`, `created_at`, `updated_at`, `email_verified`, `password_history`, `failed_login_attempts`, `lockout_until`, `last_login_at`, `last_login_ip`) SELECT `id`, `username`, `email`, `nickname`, `password`, `avatar`, `role`, `status`, `public_slug`, `bio_markdown`, `bio_visibility`, `social_links_json`, `avatar_visibility`, `discover_visible`, `discover_location`, `discover_show_location`, `created_at`, `updated_at`, `email_verified`, `password_history`, `failed_login_attempts`, `lockout_until`, `last_login_at`, `last_login_ip` FROM `users`;
--> statement-breakpoint
DROP TABLE `users`;
--> statement-breakpoint
ALTER TABLE `users_new` RENAME TO `users`;
--> statement-breakpoint
CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);
-- 2. Create user_sessions table
CREATE TABLE `user_sessions` (
`id` text PRIMARY KEY NOT NULL,
`user_id` integer NOT NULL,
`refresh_token_hash` text NOT NULL,
`user_agent` text,
`ip` text,
`created_at` integer NOT NULL,
`expires_at` integer NOT NULL,
`revoked_at` integer,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
);
--> statement-breakpoint
CREATE INDEX `user_sessions_user_id_index` ON `user_sessions` (`user_id`);