109 lines
3.6 KiB
SQL
109 lines
3.6 KiB
SQL
CREATE TABLE `account` (
|
|
`userId` text NOT NULL,
|
|
`type` text NOT NULL,
|
|
`provider` text NOT NULL,
|
|
`providerAccountId` text NOT NULL,
|
|
`refresh_token` text,
|
|
`access_token` text,
|
|
`expires_at` integer,
|
|
`token_type` text,
|
|
`scope` text,
|
|
`id_token` text,
|
|
`session_state` text,
|
|
PRIMARY KEY(`provider`, `providerAccountId`),
|
|
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `apiKey` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`name` text NOT NULL,
|
|
`createdAt` integer NOT NULL,
|
|
`keyId` text NOT NULL,
|
|
`keyHash` text NOT NULL,
|
|
`userId` text NOT NULL,
|
|
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `category` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`createdAt` integer NOT NULL,
|
|
`name` text NOT NULL,
|
|
`code` real NOT NULL,
|
|
`description` text,
|
|
`colorId` text NOT NULL,
|
|
`parentId` text,
|
|
`userId` text NOT NULL,
|
|
FOREIGN KEY (`colorId`) REFERENCES `color`(`id`) ON UPDATE no action ON DELETE no action,
|
|
FOREIGN KEY (`parentId`) REFERENCES `category`(`id`) ON UPDATE no action ON DELETE no action,
|
|
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `color` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`createdAt` integer NOT NULL,
|
|
`name` text NOT NULL,
|
|
`hexcode` text NOT NULL,
|
|
`inverse` text,
|
|
`userId` text NOT NULL,
|
|
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `config` (
|
|
`key` text PRIMARY KEY NOT NULL,
|
|
`value` text NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `day` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`date` text NOT NULL,
|
|
`mood` integer,
|
|
`comment` text,
|
|
`userId` text NOT NULL,
|
|
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `hour` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`createdAt` integer NOT NULL,
|
|
`userId` text NOT NULL,
|
|
`comment` text,
|
|
`time` integer,
|
|
`dayId` text NOT NULL,
|
|
`categoryId` text,
|
|
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY (`dayId`) REFERENCES `day`(`id`) ON UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY (`categoryId`) REFERENCES `category`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `session` (
|
|
`sessionToken` text PRIMARY KEY NOT NULL,
|
|
`userId` text NOT NULL,
|
|
`expires` integer NOT NULL,
|
|
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `user` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`name` text NOT NULL,
|
|
`email` text NOT NULL,
|
|
`emailVerified` integer,
|
|
`image` text,
|
|
`password` text,
|
|
`role` text DEFAULT 'user',
|
|
`timezone` text DEFAULT 'America/Los_Angeles' NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `verificationToken` (
|
|
`identifier` text NOT NULL,
|
|
`token` text NOT NULL,
|
|
`expires` integer NOT NULL,
|
|
PRIMARY KEY(`identifier`, `token`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `apiKey_keyId_unique` ON `apiKey` (`keyId`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `apiKey_name_userId_unique` ON `apiKey` (`name`,`userId`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `category_userId_code_unique` ON `category` (`userId`,`code`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `color_userId_name_unique` ON `color` (`userId`,`name`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `day_date_unique` ON `day` (`date`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `hour_dayId_time_unique` ON `hour` (`dayId`,`time`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `user_email_unique` ON `user` (`email`); |