CREATE TABLE `posts` (
	`id` integer PRIMARY KEY NOT NULL,
	`user_id` integer NOT NULL,
	`title` text NOT NULL,
	`slug` text NOT NULL,
	`body_markdown` text NOT NULL,
	`excerpt` text NOT NULL,
	`cover_url` text,
	`tags_json` text DEFAULT '[]' NOT NULL,
	`published_at` integer,
	`visibility` text DEFAULT 'private' NOT NULL,
	`share_token` text,
	`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,
	FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE UNIQUE INDEX `posts_user_id_slug_unique` ON `posts` (`user_id`,`slug`);--> statement-breakpoint
CREATE TABLE `timeline_events` (
	`id` integer PRIMARY KEY NOT NULL,
	`user_id` integer NOT NULL,
	`occurred_on` integer NOT NULL,
	`title` text NOT NULL,
	`body_markdown` text,
	`link_url` text,
	`visibility` text DEFAULT 'private' NOT NULL,
	`share_token` text,
	`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,
	FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `rss_feeds` (
	`id` integer PRIMARY KEY NOT NULL,
	`user_id` integer NOT NULL,
	`feed_url` text NOT NULL,
	`title` text,
	`site_url` text,
	`last_fetched_at` integer,
	`last_error` text,
	`poll_interval_minutes` integer,
	`created_at` integer DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer)) NOT NULL,
	FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE UNIQUE INDEX `rss_feeds_user_id_feed_url_unique` ON `rss_feeds` (`user_id`,`feed_url`);--> statement-breakpoint
CREATE TABLE `rss_items` (
	`id` integer PRIMARY KEY NOT NULL,
	`user_id` integer NOT NULL,
	`feed_id` integer NOT NULL,
	`guid` text,
	`canonical_url` text NOT NULL,
	`title` text,
	`summary` text,
	`content_snippet` text,
	`author` text,
	`published_at` integer,
	`visibility` text DEFAULT 'private' NOT NULL,
	`share_token` text,
	`created_at` integer DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer)) NOT NULL,
	FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,
	FOREIGN KEY (`feed_id`) REFERENCES `rss_feeds`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE UNIQUE INDEX `rss_items_feed_id_guid_unique` ON `rss_items` (`feed_id`,`guid`) WHERE "rss_items"."guid" IS NOT NULL;--> statement-breakpoint
ALTER TABLE `users` ADD `role` text DEFAULT 'user' NOT NULL;--> statement-breakpoint
ALTER TABLE `users` ADD `status` text DEFAULT 'active' NOT NULL;--> statement-breakpoint
ALTER TABLE `users` ADD `public_slug` text;--> statement-breakpoint
ALTER TABLE `users` ADD `bio_markdown` text;--> statement-breakpoint
ALTER TABLE `users` ADD `bio_visibility` text DEFAULT 'private' NOT NULL;--> statement-breakpoint
ALTER TABLE `users` ADD `social_links_json` text DEFAULT '[]' NOT NULL;--> statement-breakpoint
ALTER TABLE `users` ADD `avatar_visibility` text DEFAULT 'private' NOT NULL;--> statement-breakpoint
CREATE UNIQUE INDEX `users_public_slug_unique` ON `users` (`public_slug`);