42 lines
1.7 KiB
SQL
42 lines
1.7 KiB
SQL
CREATE TABLE `auth_tokens` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`user_id` integer NOT NULL,
|
|
`token_hash` text NOT NULL,
|
|
`purpose` text NOT NULL,
|
|
`payload` text,
|
|
`expires_at` integer NOT NULL,
|
|
`used_at` integer,
|
|
`created_at` integer DEFAULT (unixepoch()) NOT NULL,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `sessions_auth` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`user_id` integer NOT NULL,
|
|
`created_at` integer DEFAULT (unixepoch()) NOT NULL,
|
|
`expires_at` integer NOT NULL,
|
|
`last_used_at` integer DEFAULT (unixepoch()) NOT NULL,
|
|
`user_agent` text,
|
|
`ip` text,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `users` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`email` text NOT NULL,
|
|
`display_name` text NOT NULL,
|
|
`password_hash` text,
|
|
`role` text DEFAULT 'user' NOT NULL,
|
|
`is_active` integer DEFAULT true NOT NULL,
|
|
`email_verified_at` integer,
|
|
`pending_email` text,
|
|
`created_at` integer DEFAULT (unixepoch()) NOT NULL,
|
|
`updated_at` integer DEFAULT (unixepoch()) NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `auth_tokens_hash_idx` ON `auth_tokens` (`token_hash`);--> statement-breakpoint
|
|
CREATE INDEX `auth_tokens_user_purpose_idx` ON `auth_tokens` (`user_id`,`purpose`);--> statement-breakpoint
|
|
CREATE INDEX `sessions_auth_user_idx` ON `sessions_auth` (`user_id`);--> statement-breakpoint
|
|
CREATE INDEX `sessions_auth_expires_idx` ON `sessions_auth` (`expires_at`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);--> statement-breakpoint
|
|
CREATE INDEX `users_email_idx` ON `users` (`email`); |