Skip to content
File

Blob: drizzle/card-dav-do/0001_cheerful_madripoor.sql

sql71 lines
1CREATE TABLE `address_changes` (
2 `seq` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
3 `addressbook_id` text,
4 `href` text NOT NULL,
5 `change_type` text NOT NULL,
6 `changed_at_ms` integer NOT NULL,
7 FOREIGN KEY (`addressbook_id`) REFERENCES `addressbooks`(`id`) ON UPDATE no action ON DELETE cascade,
8 CONSTRAINT "address_changes_type_check" CHECK("address_changes"."change_type" in ('created', 'updated', 'deleted'))
9);
10--> statement-breakpoint
11CREATE INDEX `address_changes_book_seq_idx` ON `address_changes` (`addressbook_id`,`seq`);--> statement-breakpoint
12CREATE INDEX `address_changes_changed_idx` ON `address_changes` (`changed_at_ms`);--> statement-breakpoint
13CREATE INDEX `address_changes_href_idx` ON `address_changes` (`href`);--> statement-breakpoint
14CREATE TABLE `address_dead_props` (
15 `resource_kind` text NOT NULL,
16 `resource_id` text NOT NULL,
17 `ns_uri` text NOT NULL,
18 `local_name` text NOT NULL,
19 `xml_value` text NOT NULL,
20 PRIMARY KEY(`resource_kind`, `resource_id`, `ns_uri`, `local_name`),
21 CONSTRAINT "address_dead_props_kind_check" CHECK("address_dead_props"."resource_kind" in ('home', 'addressbook', 'object'))
22);
23--> statement-breakpoint
24CREATE TABLE `address_index` (
25 `object_id` text PRIMARY KEY NOT NULL,
26 `addressbook_id` text NOT NULL,
27 `uid` text NOT NULL,
28 `fn` text,
29 `n_family` text,
30 `n_given` text,
31 `org` text,
32 `emails_json` text NOT NULL,
33 `tels_json` text NOT NULL,
34 FOREIGN KEY (`object_id`) REFERENCES `address_objects`(`id`) ON UPDATE no action ON DELETE cascade,
35 FOREIGN KEY (`addressbook_id`) REFERENCES `addressbooks`(`id`) ON UPDATE no action ON DELETE cascade
36);
37--> statement-breakpoint
38CREATE INDEX `address_index_uid_idx` ON `address_index` (`addressbook_id`,`uid`);--> statement-breakpoint
39CREATE INDEX `address_index_fn_idx` ON `address_index` (`addressbook_id`,`fn`);--> statement-breakpoint
40CREATE INDEX `address_index_family_idx` ON `address_index` (`addressbook_id`,`n_family`);--> statement-breakpoint
41CREATE INDEX `address_index_given_idx` ON `address_index` (`addressbook_id`,`n_given`);--> statement-breakpoint
42CREATE INDEX `address_index_org_idx` ON `address_index` (`addressbook_id`,`org`);--> statement-breakpoint
43CREATE TABLE `address_objects` (
44 `id` text PRIMARY KEY NOT NULL,
45 `addressbook_id` text NOT NULL,
46 `name` text NOT NULL,
47 `uid` text NOT NULL,
48 `body` text NOT NULL,
49 `etag` text NOT NULL,
50 `size` integer NOT NULL,
51 `created_at_ms` integer NOT NULL,
52 `modified_at_ms` integer NOT NULL,
53 `version` integer DEFAULT 1 NOT NULL,
54 FOREIGN KEY (`addressbook_id`) REFERENCES `addressbooks`(`id`) ON UPDATE no action ON DELETE cascade
55);
56--> statement-breakpoint
57CREATE UNIQUE INDEX `address_objects_book_name_unique` ON `address_objects` (`addressbook_id`,`name`);--> statement-breakpoint
58CREATE UNIQUE INDEX `address_objects_book_uid_unique` ON `address_objects` (`addressbook_id`,`uid`);--> statement-breakpoint
59CREATE INDEX `address_objects_book_modified_idx` ON `address_objects` (`addressbook_id`,`modified_at_ms`);--> statement-breakpoint
60CREATE TABLE `addressbooks` (
61 `id` text PRIMARY KEY NOT NULL,
62 `name` text NOT NULL,
63 `display_name` text NOT NULL,
64 `description` text,
65 `created_at_ms` integer NOT NULL,
66 `modified_at_ms` integer NOT NULL,
67 `sync_seq` integer DEFAULT 0 NOT NULL
68);
69--> statement-breakpoint
70CREATE UNIQUE INDEX `addressbooks_name_unique` ON `addressbooks` (`name`);--> statement-breakpoint
71CREATE INDEX `addressbooks_modified_idx` ON `addressbooks` (`modified_at_ms`);