3.9 KiB
Database layout
Here is some code.
CREATE TABLE account
(
id
SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
name
VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8_bin',
email
VARCHAR(75) NOT NULL DEFAULT '0' COLLATE 'utf8_bin',
PRIMARY KEY (id
)
)
COLLATE='utf8_bin'
ENGINE=InnoDB
;
CREATE TABLE destination
(
id
INT(11) NOT NULL AUTO_INCREMENT,
dest_did
VARCHAR(11) NOT NULL DEFAULT '0' COLLATE 'utf8_bin',
verify_status
ENUM('Y','N','P') NOT NULL DEFAULT 'N' COMMENT 'Y, N, for yes or No. P for Pending' COLLATE 'utf8_bin',
idpin
MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
account_id
SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (id
),
INDEX FK_destination_account
(account_id
),
CONSTRAINT FK_destination_account
FOREIGN KEY (account_id
) REFERENCES account
(id
)
)
COLLATE='utf8_bin'
ENGINE=InnoDB
;
CREATE TABLE dids
(
id
MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
number
TINYTEXT NOT NULL COLLATE 'utf8_bin',
provider
VARCHAR(18) NULL DEFAULT '0' COLLATE 'utf8_bin',
account_id
SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (id
),
INDEX FK_dids_account
(account_id
),
CONSTRAINT FK_dids_account
FOREIGN KEY (account_id
) REFERENCES account
(id
)
)
COLLATE='utf8_bin'
ENGINE=InnoDB
;
INSERT INTO dids (number,provider,account_id) VALUES ('17605551212','Flowroute',1)
CREATE TABLE messages
(
id
INT(11) NOT NULL AUTO_INCREMENT,
account_id
SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
timestamp
INT(12) NOT NULL,
pid
VARCHAR(64) NULL DEFAULT NULL COMMENT 'Flowroute Msg Id' COLLATE 'utf8_bin',
provider_timestamp
VARCHAR(24) NULL DEFAULT NULL COMMENT 'Flowroute Provided Timestamp' COLLATE 'utf8_bin',
direction
ENUM('inbound','outbound') NULL DEFAULT 'inbound' COLLATE 'utf8_bin',
source_number
VARCHAR(11) NOT NULL COLLATE 'utf8_bin',
dest_number
VARCHAR(11) NOT NULL COLLATE 'utf8_bin',
cost
VARCHAR(10) NOT NULL DEFAULT '0.00' COLLATE 'utf8_bin',
body
TEXT NOT NULL COLLATE 'utf8_bin',
PRIMARY KEY (id
),
INDEX FK_messages_account
(account_id
),
CONSTRAINT FK_messages_account
FOREIGN KEY (account_id
) REFERENCES account
(id
)
)
COLLATE='utf8_bin'
ENGINE=InnoDB
;
########## Update V1, add delivered status to messages table.
ALTER TABLE messages ADD COLUMN status VARCHAR(30) NOT NULL DEFAULT 'pending';
ALTER TABLE messages
MODIFY provider_timestamp
VARCHAR(36);
##########Update V2
Adding token and other infos.
ALTER TABLE account ADD COLUMN refresh_token
BLOB NULL;
ALTER TABLE account ADD COLUMN google_id
VARCHAR(255) NULL UNIQUE;
ALTER TABLE account ADD COLUMN verified_email
BOOL NOT NULL DEFAULT False;
##########Update V3
Adding last modified and created, as well as changing the timestamp
This requires loss of all logs. Oops.
ALTER TABLE account ADD COLUMN created
TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE account ADD COLUMN last_modified
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE messages MODIFY timestamp
TIMESTAMP NOT NULL;
##########Update V4
Add an entirely new table contactlist
CREATE TABLE contacts
(
id
INT(11) NOT NULL AUTO_INCREMENT,
account_id
SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
last_modified
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
archived
BOOL NOT NULL DEFAULT '0',
fullname
VARCHAR(122) NOT NULL,
email
VARCHAR(200) NULL,
PRIMARY KEY (id
),
INDEX FK_contacts_account
(account_id
)
)
COLLATE='utf8_bin'
ENGINE=InnoDB;
CREATE TABLE phonebase
(
id
INT(11) NOT NULL AUTO_INCREMENT,
contact_id
SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
phone_number
VARCHAR(15) NOT NULL,
number_type
ENUM('mobile','home', 'office', 'other') NULL DEFAULT 'mobile',
archived
BOOL NOT NULL DEFAULT '0',
PRIMARY KEY (id
),
INDEX pb_phonebaseID
(contact_id
),
INDEX index_archivedNumbers
(archived
),
CONSTRAINT pb_accountassoc
FOREIGN KEY (contact_id
) REFERENCES account (id)
)
COLLATE='utf8_bin'
ENGINE=InnoDB;