diff --git a/scripts/add-openxcap-user.py b/scripts/add-openxcap-user.py index ef53eb3..1fcc14d 100755 --- a/scripts/add-openxcap-user.py +++ b/scripts/add-openxcap-user.py @@ -1,19 +1,19 @@ -#!/usr/bin/python2 +#!/usr/bin/env python3 """This is an example that shows how a new user could be added to `subscriber' table. It does NOT actually create a new record in the database. """ import sys from hashlib import md5 -print __doc__ +print(__doc__) try: username, domain, password = sys.argv[1:] except ValueError: sys.exit('USAGE: %s username domain password' % sys.argv[0]) -hash = md5(":".join([username, domain, password])).hexdigest() +hash = md5(":".join([username, domain, password]).encode('utf-8')).hexdigest() query = """INSERT INTO subscriber (username, domain, password, ha1) VALUES ("%(username)s", "%(domain)s", "%(password)s", "%(hash)s");""" % locals() -print query +print(query) diff --git a/scripts/mysql-create-tables.sql b/scripts/mysql-create-tables.sql index 6e69b45..0efdb22 100644 --- a/scripts/mysql-create-tables.sql +++ b/scripts/mysql-create-tables.sql @@ -1,23 +1,40 @@ CREATE TABLE subscriber ( - id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, - username VARCHAR(64) NOT NULL DEFAULT '', - domain VARCHAR(64) NOT NULL DEFAULT '', - password VARCHAR(25) NOT NULL DEFAULT '', - ha1 VARCHAR(64) NOT NULL DEFAULT '', - UNIQUE KEY user_id (username, domain), - KEY username_id (username) -) ENGINE=InnoDB; + id INTEGER NOT NULL AUTO_INCREMENT, + username VARCHAR(64), + domain VARCHAR(64), + password VARCHAR(255), + ha1 VARCHAR(64), + PRIMARY KEY (id) +); -CREATE TABLE `xcap` ( - `id` int(10) NOT NULL auto_increment, - `username` varchar(66) NOT NULL, - `domain` varchar(128) NOT NULL, - `doc` mediumblob NOT NULL, - `doc_type` int(11) NOT NULL, - `etag` varchar(64) NOT NULL, - `source` int(11) NOT NULL, - `doc_uri` varchar(128) NOT NULL, - `port` int(11) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `udd_xcap` (`username`,`domain`,`doc_type`,`doc_uri`) -) ENGINE=InnoDB; +CREATE TABLE watchers ( + id INTEGER NOT NULL AUTO_INCREMENT, + presentity_uri VARCHAR(255) NOT NULL, + watcher_username VARCHAR(64) NOT NULL, + watcher_domain VARCHAR(64) NOT NULL, + event VARCHAR(64) NOT NULL, + status INTEGER NOT NULL, + reason VARCHAR(64), + inserted_time INTEGER NOT NULL, + PRIMARY KEY (id), + CONSTRAINT watcher_idx UNIQUE (presentity_uri, watcher_username, watcher_domain, event) +); + +CREATE TABLE xcap ( + id INTEGER NOT NULL AUTO_INCREMENT, + subscriber_id INTEGER, + username VARCHAR(64) NOT NULL, + domain VARCHAR(64) NOT NULL, + doc BLOB NOT NULL, + doc_type INTEGER NOT NULL, + etag VARCHAR(64) NOT NULL, + source INTEGER NOT NULL, + doc_uri VARCHAR(255) NOT NULL, + port INTEGER NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY(subscriber_id) REFERENCES subscriber (id) ON DELETE CASCADE, + CONSTRAINT account_doc_type_idx UNIQUE (username, domain, doc_type, doc_uri) +); + +CREATE INDEX source_idx ON xcap (source); +CREATE INDEX xcap_subscriber_id_exists ON xcap (subscriber_id);