75 lines
2.9 KiB
SQL
75 lines
2.9 KiB
SQL
CREATE TABLE `combined_charts` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`user_id` text NOT NULL,
|
|
`name` text NOT NULL,
|
|
`habit_ids` text NOT NULL,
|
|
`settings` text NOT NULL,
|
|
`created_at` integer NOT NULL,
|
|
`updated_at` integer NOT NULL,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `combined_charts_user_idx` ON `combined_charts` (`user_id`);--> statement-breakpoint
|
|
CREATE TABLE `habit_calendar_settings` (
|
|
`habit_id` text PRIMARY KEY NOT NULL,
|
|
`settings` text NOT NULL,
|
|
FOREIGN KEY (`habit_id`) REFERENCES `habits`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `habit_days` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`habit_id` text NOT NULL,
|
|
`revision_id` integer NOT NULL,
|
|
`date` text NOT NULL,
|
|
`timezone` text NOT NULL,
|
|
`ends_at` integer NOT NULL,
|
|
`count` integer DEFAULT 0 NOT NULL,
|
|
`done` integer DEFAULT false NOT NULL,
|
|
FOREIGN KEY (`habit_id`) REFERENCES `habits`(`id`) ON UPDATE no action ON DELETE no action,
|
|
FOREIGN KEY (`revision_id`) REFERENCES `habit_revisions`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `habit_days_lookup_idx` ON `habit_days` (`habit_id`,`date`,`revision_id`);--> statement-breakpoint
|
|
CREATE TABLE `habit_revisions` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`habit_id` text NOT NULL,
|
|
`effective_date` text NOT NULL,
|
|
`config` text NOT NULL,
|
|
`created_at` integer NOT NULL,
|
|
FOREIGN KEY (`habit_id`) REFERENCES `habits`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `habit_revisions_date_idx` ON `habit_revisions` (`habit_id`,`effective_date`,`id`);--> statement-breakpoint
|
|
CREATE TABLE `habits` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`user_id` text NOT NULL,
|
|
`created_date` text NOT NULL,
|
|
`materialized_through` text,
|
|
`created_at` integer NOT NULL,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `habits_user_idx` ON `habits` (`user_id`);--> statement-breakpoint
|
|
CREATE TABLE `progress_events` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`day_id` integer NOT NULL,
|
|
`occurrence_id` text,
|
|
`before` text NOT NULL,
|
|
`after` text NOT NULL,
|
|
`created_at` integer NOT NULL,
|
|
FOREIGN KEY (`day_id`) REFERENCES `habit_days`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `progress_events_day_idx` ON `progress_events` (`day_id`);--> statement-breakpoint
|
|
CREATE TABLE `task_occurrences` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`day_id` integer NOT NULL,
|
|
`task_id` text NOT NULL,
|
|
`name` text NOT NULL,
|
|
`done` integer DEFAULT false NOT NULL,
|
|
`expired_at` integer,
|
|
`updated_at` integer NOT NULL,
|
|
FOREIGN KEY (`day_id`) REFERENCES `habit_days`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `task_occurrences_day_idx` ON `task_occurrences` (`day_id`); |