CREATE TABLE `biblioteca_anotacoes` (
	`id` int AUTO_INCREMENT NOT NULL,
	`user_id` int NOT NULL,
	`livro_id` int NOT NULL,
	`tipo` enum('marcador','grifo','compartilhamento') NOT NULL,
	`cfi_inicio` varchar(500) NOT NULL,
	`cfi_fim` varchar(500),
	`trecho_texto` text,
	`nota_leitor` varchar(500),
	`publico` boolean NOT NULL DEFAULT false,
	`criado_em` timestamp NOT NULL DEFAULT (now()),
	CONSTRAINT `biblioteca_anotacoes_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `biblioteca_favoritos` (
	`id` int AUTO_INCREMENT NOT NULL,
	`user_id` int NOT NULL,
	`livro_id` int NOT NULL,
	`criado_em` timestamp NOT NULL DEFAULT (now()),
	CONSTRAINT `biblioteca_favoritos_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `biblioteca_historico` (
	`id` int AUTO_INCREMENT NOT NULL,
	`user_id` int NOT NULL,
	`livro_id` int NOT NULL,
	`posicao_leitura` varchar(500),
	`atualizado_em` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
	CONSTRAINT `biblioteca_historico_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `biblioteca_livros` (
	`id` int AUTO_INCREMENT NOT NULL,
	`titulo` varchar(255) NOT NULL,
	`subtitulo` varchar(255),
	`serie` varchar(191),
	`volume_numero` int,
	`autor` varchar(191) NOT NULL,
	`resumo` text,
	`capa_url` varchar(500),
	`epub_url` varchar(500),
	`docx_original_url` varchar(500),
	`nivel_acesso` enum('gratuito','assinante') NOT NULL DEFAULT 'gratuito',
	`formato` enum('texto','audiolivro') NOT NULL DEFAULT 'texto',
	`status` enum('rascunho','publicado') NOT NULL DEFAULT 'rascunho',
	`criado_por` int NOT NULL,
	`criado_em` timestamp NOT NULL DEFAULT (now()),
	`atualizado_em` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
	CONSTRAINT `biblioteca_livros_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `users` (
	`id` int AUTO_INCREMENT NOT NULL,
	`nome` varchar(191) NOT NULL,
	`email` varchar(191) NOT NULL,
	`senha_hash` varchar(191) NOT NULL,
	`papel` enum('user','admin','editor') NOT NULL DEFAULT 'user',
	`criado_em` timestamp NOT NULL DEFAULT (now()),
	CONSTRAINT `users_id` PRIMARY KEY(`id`),
	CONSTRAINT `users_email_unique` UNIQUE(`email`)
);
