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
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`);
|