-- Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-- For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
CREATE TABLE IF NOT EXISTS contacts
(
_id INTEGER PRIMARY KEY,
name_id INTEGER,
numbers_id TEXT NOT NULL,
ring_id INTEGER,
address_id INTEGER,
speeddial TEXT NOT NULL,
FOREIGN KEY (name_id) REFERENCES contact_name (_id),
FOREIGN KEY (ring_id) REFERENCES contact_ringtones (_id)
);
CREATE TABLE IF NOT EXISTS contact_address
(
_id INTEGER PRIMARY KEY,
contact_id INTEGER,
address TEXT NOT NULL,
note TEXT NOT NULL,
mail TEXT NOT NULL,
FOREIGN KEY (contact_id) REFERENCES contacts (_id)
);
CREATE TABLE IF NOT EXISTS contact_groups
(
_id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE
);
CREATE TABLE IF NOT EXISTS contact_match_groups
(
_id INTEGER PRIMARY KEY,
group_id INTEGER,
contact_id INTEGER,
FOREIGN KEY (group_id) REFERENCES contact_groups (_id)
ON DELETE CASCADE,
FOREIGN KEY (contact_id) REFERENCES contacts (_id)
ON DELETE CASCADE,
CONSTRAINT unique_group_contact
UNIQUE (group_id, contact_id)
);
CREATE TABLE IF NOT EXISTS contact_group_protected
(
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
group_id INTEGER NOT NULL UNIQUE
);
CREATE TABLE IF NOT EXISTS contact_name
(
_id INTEGER PRIMARY KEY,
contact_id INTEGER,
name_primary TEXT NOT NULL,
name_alternative TEXT NOT NULL,
FOREIGN KEY (contact_id) REFERENCES contacts (_id)
);
CREATE TABLE IF NOT EXISTS contact_number
(
_id INTEGER PRIMARY KEY,
contact_id INTEGER,
number_user TEXT NOT NULL,
number_e164 TEXT NOT NULL,
type INTEGER,
FOREIGN KEY (contact_id) REFERENCES contacts (_id)
);
CREATE TABLE IF NOT EXISTS contact_ringtones
(
_id INTEGER PRIMARY KEY,
contact_id INTEGER,
asset_path TEXT NOT NULL,
FOREIGN KEY (contact_id) REFERENCES contacts (_id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS contact_match_group_index_on_group
ON contact_match_groups (group_id);
CREATE INDEX IF NOT EXISTS contact_match_group_index_on_contact
ON contact_match_groups (contact_id);