Files
rustical/crates/store_sqlite/migrations/20250426122343_addressbooks.sql
2025-04-26 14:25:37 +02:00

39 lines
1.2 KiB
SQL

CREATE TABLE addressbooks (
principal TEXT NOT NULL,
id TEXT NOT NULL,
synctoken INTEGER DEFAULT 0 NOT NULL,
displayname TEXT,
description TEXT,
deleted_at DATETIME,
push_topic TEXT UNIQUE NOT NULL,
PRIMARY KEY (principal, id),
CONSTRAINT fk_addressbook_principal FOREIGN KEY (principal)
REFERENCES principals (id) ON DELETE RESTRICT
);
CREATE TABLE addressobjects (
principal TEXT NOT NULL,
addressbook_id TEXT NOT NULL,
id TEXT NOT NULL,
vcf TEXT NOT NULL,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
deleted_at DATETIME,
PRIMARY KEY (principal, addressbook_id, id),
FOREIGN KEY (principal, addressbook_id)
REFERENCES addressbooks (principal, id) ON DELETE CASCADE
);
CREATE TABLE addressobjectchangelog (
principal TEXT NOT NULL,
addressbook_id TEXT NOT NULL,
object_id TEXT NOT NULL,
"operation" INTEGER NOT NULL,
synctoken INTEGER DEFAULT 0 NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (principal, addressbook_id, synctoken, created_at),
FOREIGN KEY (principal, addressbook_id)
REFERENCES addressbooks (principal, id) ON DELETE CASCADE
);
CREATE INDEX idx_addrobj_log_cal ON addressobjectchangelog (addressbook_id);